2017-04-05 97 views
0

如何使用aggregateby命令將變量添加到數據集?例如,我有:如何將聚合變量添加到R中的現有數據集中

num x1 
1 1 
1 0 
2 0 
2 0 

而且我希望創建一個變量來確定每個變量的任何num是1,例如:

num x1 x2 
1 1 1 
1 0 1 
2 0 0 
2 0 0 

num x1 x2 
1 1 TRUE 
1 0 TRUE 
2 0 FALSE 
2 0 FALSE 

我試過用

df$x2 <- aggregate(df$x1, by = list(df$num), FUN = sum) 

但是我收到一個錯誤,表示替換的行數不同於數據。誰能幫忙?

回答

0

這可以通過用'num'分組並檢查'x'1中是否有any 1元素來完成。從base Rave爲此提供便利,而不是aggregate

df1$x2 <- with(df1, ave(x1==1, num, FUN = any)) 
df1$x2 
#[1] 1 1 0 0 

或者使用dplyr,我們按「NUM」和創建通過檢查「X2」如果any「X1」等於1。將是一個邏輯向量,如果我們不打包與as.integer轉換爲二進制

library(dplyr) 
df1 %>% 
    group_by(num) %>% 
    mutate(x2 = as.integer(any(x1==1))) 
相關問題