【发布时间】:2014-11-12 11:00:50
【问题描述】:
我想在数据表中添加一列,其中包含 y 的每个值除以 x(1 或 2)中相应条件的平均值,其中 x2 = 1。对于以下 x = 1 的数据,y 应该是除以 1.4,其中 x=2 y 应除以 1。
dt1 <- data.table(x=c("1","1","1","1","1","1","1","1","1","1","2","2","2","2","2","2","2","2","2","2"),
x2=c("1","1","2","2","2","2","3","3","3","3","1","1","2","2","2","2","3","3","3","3"),
y=c(1.41,1.39,1.9,2.1,0.9,1.1,3.1,2.9,3.9,4.1,0.9,1.1,1.9,2.1,0.9,1.1,3.1,2.9,3.9,4.1))
我可以将 x * x2 = 1 的平均值写入一个新文件。
mean <- dt1 %>% filter(x2==1) %>% group_by(x) %>% summarise(mean(y))
但我不知道如何网格化指示命令调用正确的值。 dt1 %>% mutate(z = y/a reference to 'mean')
我想创建一个新列,其中填充了我想要除以的值,但我再次无法弄清楚如何从命令中调用分组条件。
t <- dt1 %>% mutate(T=ifelse(x==1,(filter(x2==1) %>% group_by(x=1) %>%
summarise(mean(y))),ifelse(x==1,(filter(x2==2) %>% group_by(x=2) %>%
summarise(mean(y))),NA)
我并没有只使用 dplyr,但我最近一直在使用它。我愿意接受最简单的解决方案。
【问题讨论】: