【发布时间】:2017-08-14 07:31:10
【问题描述】:
我在 R 中有一个具有这种结构的数据框:
df1<-data.frame(SiteID=c("A","A","A","B","B","C"),Unrelated=c("dog","cat","catamount","bird","horse","monkey"),AirMonitor=c(1,0,0,0,0,1),WaterMonitor=c(0,1,0,1,0,0),SoilMonitor=c(0,0,1,0,1,0))
输出如下:
SiteID Unrelated AirMonitor WaterMonitor SoilMonitor
1 A dog 1 0 0
2 A cat 0 1 0
3 A catamount 0 0 1
4 B bird 0 1 0
5 B horse 0 0 1
6 C monkey 1 0 0
1 表示该站点存在该类型的监视器(如果需要,我可以将监视器列更改为具有 "Y" 和 "N" 值的因子)。基本上,我想通过SiteID 聚合监视器的存在,然后保留所有行,以免丢失Unrelated 列中的数据。我希望1 的价值观战胜0 的价值观。例如,如果任何带有SiteID A 的行有一个1 对应AirMonitor,我希望所有带有SiteID A 的行都有一个1 对应AirMonitor。其他两种监视器类型相同。
期望的输出:
SiteID Unrelated AirMonitor WaterMonitor SoilMonitor
1 A dog 1 1 1
2 A cat 1 1 1
3 A catamount 1 1 1
4 B bird 0 1 1
5 B horse 0 1 1
6 C monkey 1 0 0
真正的数据集还有几个不相关的列和数千行。必须有一些简单的方法来做到这一点(可能是aggregate?)。
【问题讨论】:
标签: r