我有一个大型 Dataframe ,希望将value1的随机10%替换为NA,并将value2的另一个随机20%替换为NA
我在做这个,它很有效,但不漂亮。有更好的方法吗?
df%>%
mutate(rand = runif(1:length(df$id)),
value1 = replace(value1, which(rand < 0.1), NA),
rand = runif(1:length(df$id)),
value2 = replace(value2, which(rand < 0.2), NA))
2条答案
按热度按时间zbdgwd5y1#
一个简单的方法是将重复的部分提取为函数,并直接替换向量的部分,而不是创建一个新列:
这实际上只是稍微重写了一下代码,但是在定义了函数之后,在实际代码中继续使用它看起来会更整洁一些。
mxg2im7a2#
使用替换操作符。不确定“漂亮”的度量是什么,但这应该很容易理解。
虽然我并不认为您的方法“不漂亮”,但使用随机数生成器可能无法准确地给予目标比例,尤其是在小数据集上(不确定这是否是一个问题)。
如果您真的选择了
tidy
版本:就我个人而言,如果我是第一次阅读代码,我会发现很难理解
tidy
版本中的内容