我如何通过组中的R
问题描述:
创建与DF唯一值的计数的新专栏中,我有一个数据帧DF,看起来像这样我如何通过组中的R
ID Color Street Apt Year
1 blue 14 8 1986
1 red 14 9 1986
2 blue 10 1 1990
3 pink 70 5 1970
3 blue 70 6 1970
3 blue 17 2 1970
我想创建一个新列,显示号码每个ID的颜色街道和apt的独特价值。
ID Color Street Apt Year Count
1 blue 14 8 1986 5
1 red 14 9 1986 5
2 blue 10 1 1990 3
3 pink 70 5 1970 7
3 blue 70 6 1970 7
3 blue 17 2 1970 7
我尝试了好几种方法,但这些行要么不能循环,让反复向下计数coulmn相同的值。我试过as.character(),因为其中一列是非数字的。
我认为,理想的解决办法来用每个ID的3列值的列表,然后在列表中算独特的价值,但我不知道如何做到这一点的R.似乎在Python
简单
答
通过“ID”分组之后,我们得到“颜色”,“街”,“公寓”和sum
一起到mutate
的n_distinct
与“计数”列
library(dplyr)
df1 %>%
group_by(ID) %>%
mutate(Count = sum(c(n_distinct(Color), n_distinct(Street), n_distinct(Apt))))
# A tibble: 6 x 6
# Groups: ID [3]
# ID Color Street Apt Year Count
# <int> <chr> <int> <int> <int> <int>
#1 1 blue 142 8 1986 5
#2 1 red 142 9 1986 5
#3 2 blue 102 1 1990 3
#4 3 pink 70 5 1970 7
#5 3 blue 70 20 1970 7
#6 3 blue 107 2 1970 7
谢谢。但是,这是我使用的方法,它返回了重复相同值的计数列,即整个数据集上的n_dictinct值。在这种情况下,15. – codekoala
@codekoala也许你使用过'plyr :: mutate',使用'dplyr :: mutate(Count = ...' – akrun