听我说。考虑一个任意情况,其中新列的元素不需要来自其他列的任何信息(我对基础$和变异赋值感到沮丧),并且新列中的每个元素都不相同。这是我尝试过的:
df$rand<-rep(sample(1:100,1),nrow(df))
unique(df$rand)
[1] 58
并放心,nrow(df)>1
。我认为正确的解决方案可能与apply函数有关吗?
答案 0 :(得分:2)
您的代码会重复一次随机数nrow(df)
次。请尝试改为:
df$rand<-sample(1:100, nrow(df))
从1:100
nrow(df)
次对无需替换进行采样。现在这会在nrow(df)>100
时出现错误,因为您的数字会从1:100
用完到样本。为确保您不会收到此错误,您可以使用替换替换 :
df$rand<-sample(1:100, nrow(df), replace = TRUE)
但是,如果您不想重复任何随机数字但又想要防止错误,您可以这样做:
df$rand<-sample(1:nrow(df), nrow(df))
答案 1 :(得分:0)
如果我理解正确,我认为在dplyr或data.table中这很容易实现。
用于例如虹膜上的dplyr溶液
select *
from employee e
where e.age = 14 -- change to any age you want, then ...
and e.salary = case when e.age > 30
then 1000 -- when e.age > 30, e.salary=1000
else e.salary -- when e.age <= 30, e.salary=e.salary
end