Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
随机将NAs和/或因子级别更改为R中的其他因子级别_R_Dplyr - Fatal编程技术网

随机将NAs和/或因子级别更改为R中的其他因子级别

随机将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

我有一个数据框,其中一列是一个分类变量“group”,有3个级别:“a”、“B”、“Unknown”,它还有NAs


我想把所有的“未知”和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)]