我有一个数据框

df<-data.frame(id=rep(1:10,each=10),
               Room1=rnorm(100,0.4,0.5),
               Room2=rnorm(100,0.3,0.5),
               Room3=rnorm(100,0.7,0.5))

我想使用Case_When逐个组地改变Room1(id=10中的那些):

data <- df %>%
  mutate(Room1 = case_when(
    id==10 ~ 0.6,
    TRUE ~ as.numeric(Room1)
))

但只针对id=10的20%的行.这20%应该随机分配.有人能帮忙吗?提前谢谢你

推荐答案

id分组,并使用dplyr::percent_rank(runif(n())) <= .2id内随机 Select 20%的病例.

我假设您打算在case_when()中添加更多条件--否则,您可以使用if_else().

set.seed(13)
library(dplyr)  

data <- df %>%
  group_by(id) %>% 
  mutate(Room1 = case_when(
    id == 10 & percent_rank(runif(n())) <= .2 ~ 0.6,
    TRUE ~ Room1
  )) %>% 
  ungroup()

tail(data, 10)
# A tibble: 10 × 4
      id  Room1   Room2   Room3
   <int>  <dbl>   <dbl>   <dbl>
 1    10  0.590  0.801   0.745 
 2    10  0.117  0.517  -0.491 
 3    10 -0.207  0.533   2.15  
 4    10 -0.282 -0.249   0.828 
 5    10  0.6    0.605   0.778 
 6    10  0.272  0.308   0.0575
 7    10 -0.213  0.668   0.476 
 8    10  0.507  0.923  -0.0948
 9    10  0.434 -0.0663  0.0720
10    10  0.6    0.264   0.647 

R相关问答推荐

R Lubridate:舍入/快照日期时间到一天中最近的任意时间?

如何 bootstrap glm回归、估计95%置信区间并绘制它?

编辑文件后编辑RhandsonTable

过滤器数据.基于两列的帧行和R中的外部向量

R根据条件进行累积更改

使用整齐的计算(curl -curl )和杂音

R中的哈密顿滤波

使用带有OR条件的grepl过滤字符串

如何基于两个条件从一列中提取行

汇总数据的Sheffe检验的P值(平均值和标准差)

为什么在BASE R中绘制线条时会看到线上的点?

仅在R中的数据集开始和结束时删除所有 Select 列的具有NA的行

正则表达式在第二个管道和第二个T之后拆分R中的列

如何在R中使用hmm TMB提前一步预测观察到的状态?

如何在R中改变fviz_pca_biplot中圆的边界线的 colored颜色 ?

如何将这个小列表转换为数据帧?

如何筛选截止年份之前最后一个测量年度的所有观测值以及截止年份之后所有年份的所有观测值

长/纬点继续在堪萨斯-SF结束,整齐的人口普查

如何在基数R中根据矩阵散点图中的因子给数据上色?

如何在类应用函数中访问函数本身