随机将NAs和/或因子级别更改为R中的其他因子级别
我有一个数据框,其中一列是一个分类变量“group”,有3个级别:“a”、“B”、“Unknown”,它还有NAs随机将NAs和/或因子级别更改为R中的其他因子级别,r,dplyr,R,Dplyr,我有一个数据框,其中一列是一个分类变量“group”,有3个级别:“a”、“B”、“Unknown”,它还有NAs 我想把所有的“未知”和NAs随机分配一半给“A”,一半给“B”。我试着在dplyr中使用mutate()和replace()函数,但想不出如何将它们平均随机分配给这两个组。类似的东西 replacements = sample ( c ( 'A', 'B' ), number_wanted, replace = TRUE ) 。。。如果你能做到这一点那就有个好主意吧 data.t
我想把所有的“未知”和NAs随机分配一半给“A”,一半给“B”。我试着在dplyr中使用
mutate()
和replace()
函数,但想不出如何将它们平均随机分配给这两个组。类似的东西
replacements = sample ( c ( 'A', 'B' ), number_wanted, replace = TRUE )
。。。如果你能做到这一点那就有个好主意吧
data.table
包提供了一个简洁的解决方案
library(data.table)
setDT(df) # make your data.frame into a data.table
# filter for rows where your grouping variable is NA or equals "Unknown" then randomly select A or B. .N is a special data.table character representing the number of rows in the selection
df[is.na(group_var) | group_var == "Unknown", group_var := sample(c("A", "B"), .N)]