2017-05-09 54 views
0

我有一個數據幀,看起來像這樣:替換值求和

GooseIPA HeadHunter BlindPig MosaicPromise HopHunter 
9 10 8 6 10 
0 6 8 4 1 
0 2 3 1 0 

如果colSums <=10我想要替換與NA該列的所有值。

輸出應該是這樣的:

GooseIPA HeadHunter BlindPig MosaicPromise HopHunter 
NA 10 8 6 10 
NA 6 8 4 1 
NA 2 3 1 0 

回答

1

這裏是sapply的方法。

is.na(df) <- sapply(df, function(x) (sum(x) < 10)) 

的想法是,sapply循環通過變量並檢查每個的總和是否小於10,如果是,TRUE被分配給is.na

df 
    GooseIPA HeadHunter BlindPig MosaicPromise HopHunter 
1  NA   10  8    6  10 
2  NA   6  8    4   1 
3  NA   2  3    1   0 

同樣的方法,但可能與colSums更快

is.na(df) <- (colSums(df) < 10) 

數據

df <- 
dput(df) 
structure(list(GooseIPA = c(9L, 0L, 0L), HeadHunter = c(10L, 
6L, 2L), BlindPig = c(8L, 8L, 3L), MosaicPromise = c(6L, 4L, 
1L), HopHunter = c(10L, 1L, 0L)), .Names = c("GooseIPA", "HeadHunter", 
"BlindPig", "MosaicPromise", "HopHunter"), class = "data.frame", row.names = c(NA, 
-3L)) 
2

如果您的數據幀被稱爲df,那麼你可以使用:

 df[,colSums(df)<=10]<-NA