这是shor示例数据。原始数据有许多列和行。
头(df,15)
ID col1 col2
1 1 green yellow
2 1 green blue
3 1 green green
4 2 yellow blue
5 2 yellow yellow
6 2 yellow blue
7 3 yellow yellow
8 3 yellow yellow
9 3 yellow blue
10 4 blue yellow
11 4 blue yellow
12 4 blue yellow
13 5 yellow yellow
14 5 yellow blue
15 5 yellow yellow我想计算包括col1的颜色在内的col2中有多少种不同的颜色。例如:对于ID=4,在col2中只有一种颜色。如果我们包括col1,有两种不同的颜色。所以输出应该是2,依此类推。
我尝试过这种方式,但没有得到我想要的输出: ID =4变成了0,这不是我想要的。那么,我该如何告诉R在col1中计算颜色呢?
out <- df %>%
group_by(ID) %>%
mutate(N = ifelse(col1 != col2, 1, 0))我想要的输出是这样的:
ID col1 count
1 green 3
2 yellow 2
3 yellow 2
4 blue 2
5 yellow 2发布于 2019-04-26 02:50:04
您可以执行以下操作:
df %>%
group_by(ID, col1) %>%
summarise(count = n_distinct(col2))
ID col1 count
<int> <chr> <int>
1 1 green 3
2 2 yellow 2
3 3 yellow 2
4 4 blue 1
5 5 yellow 2或者甚至是:
df %>%
group_by(ID, col1) %>%
summarise_all(n_distinct)
ID col1 col2
<int> <chr> <int>
1 1 green 3
2 2 yellow 2
3 3 yellow 2
4 4 blue 1
5 5 yellow 2按每三行分组:
df %>%
group_by(group = gl(n()/3, 3), col1) %>%
summarise(count = n_distinct(col2))https://stackoverflow.com/questions/55855797
复制相似问题