我在R A数据帧具有这种结构:集合值但保留所有行中的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的所有行对于AirMonitor
具有1
。其他两种监视器类型也相同。
所需的输出:
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
?)。
谢谢!我用'c(“AirMonitor”,“WaterMonitor”,“SoilMonitor”)替换了'-c(1:2)',因为我有很多不相关的列要保存,并且仍然有效。 – rilkehayden
我可能会使用'lapply'来避免'sapply'所做的简化到矩阵的过程。 – thelatemail