我在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