【发布时间】:2016-10-14 06:39:46
【问题描述】:
我有一个带有两个变量的 data.frame。我需要按 var1 对它们进行分组,并将 var2 中的每个 x 替换为该组中唯一的不同值。
例如:
var1 var2
1 1 a
2 2 a
3 2 x
4 3 b
5 4 c
6 5 a
7 6 c
8 6 x
9 7 c
10 8 x
11 8 b
12 8 b
13 9 a
结果应该是:
var1 var2
1 1 a
2 2 a
3 2 a <-
4 3 b
5 4 c
6 5 a
7 6 c
8 6 c <-
9 7 c
10 8 b <-
11 8 b
12 8 b
13 9 a
我确实设法解决了这个例子:
dat <- data.frame(var1=c(1,2,2,3,4,5,6,6,7,8,8,8,9), var2=c("a","a","x","b","c","a","a","x","c","x","b","b","a"))
dat %>% group_by(var1) %>% mutate(
var2 = as.character(var2),
var2 = ifelse(var2 == 'x',var2[order(var2)][1],var2))
但这不适用于我的真实数据,因为排序:(
我需要另一种方法,我想到了一些类似检查“not x”的方法,但我没有找到解决方案。
任何帮助表示感谢!
【问题讨论】:
-
如果同一组中有两个或多个唯一的非 x 值怎么办?像 var1 = c(10,10,10); var2=c(“a”,”b”,”x”)。如果 x 是组中的唯一值怎么办?