我有一个df
df <- data.frame(ID = c(1, 2, 3, 4, 5, 5, 7, 8),
var1 = c('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'),
var2 = c(1, 1, 0, 0, 1, 1, 0, 0),
var3 = c(50, 40, 30, 45, 33, 51, 70, 46))
我想使用以下命令将25%的 Dataframe 的var2修改为"0.3":
df %>%
mutate(var2 = case_when(sample(n()) <= n()*0.25 ~ 0.3,
TRUE ~ var2
))
但是,我希望按 * var3 * 的降序选择25%的数据,以便输出为:
ID var1 var2 var3
1 1 a 1 50
2 2 b 1 40
3 3 c 0 30
4 4 d 0 45
5 5 e 1 33
6 5 f 0.3 51
7 7 g 0.3 70
8 8 h 0 46
其中,行IDS6和7已被修改,因为它们具有Var3的最高值和第二高值。它应该工作,以便我可以改变突变的百分比,但它们始终按Var3的降序应用。
先谢谢你
3条答案
按热度按时间jjhzyzn01#
这里有一个方法:
bqucvtff2#
使用
arrange
的解决方案,然后返回到以前的顺序。zzoitvuj3#
下面是一个解决方案,按
var3
对 Dataframe 进行排序,并检查row_number
是否等于或小于总行数的25%:输出: