所以我有一个condition
列和value
列的数据帧。假设我要更改满足条件的值之一,但不能更改满足条件的所有值。这里的想法是,我想一个接一个地更改值(或随机选择一个)。
df <- data.frame(condition = c(TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE),
value = 8:1)
我想将其存储在新列中。假设我随机选择第2行:条件为TRUE,原始值为7。我将其更改为0(或其他某个值)。在这种情况下,所需的输出是:
> df
condition value
1 TRUE 8
2 TRUE 7
3 TRUE 6
4 TRUE 5
5 FALSE 4
6 FALSE 3
7 FALSE 2
8 FALSE 1
我想我可以使用if语句,group-row-numbers的第三列和示例函数来执行此操作,但是有更好的方法吗?特别是,我需要确保在不满足任何值的条件的情况下,不要生成新列。否则,稍后在分析中我会浪费大量的计算时间。 如果可以的话,我通常会在tidyverse内部做事,但是我不介意是否有一个不错的解决方案而不使用该软件包(或使用其他软件包)。 谢谢!
答案 0 :(得分:0)
这没有第3列,但是与您已经有的想法相同。
df <- data.frame(condition = c(TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE,FALSE),
value = 8:1)
sample<-sample(1:8,1)
library(dplyr)
df2<-df %>% mutate(value=ifelse(condition==TRUE & row_number()==sample,0,value))