如何将随机或任意列附加到数据框[R]

时间:2017-09-22 14:01:54

标签: r dplyr

听我说。考虑一个任意情况,其中新列的元素不需要来自其他列的任何信息(我对基础$和变异赋值感到沮丧),并且新列中的每个元素都不相同。这是我尝试过的:

df$rand<-rep(sample(1:100,1),nrow(df))
unique(df$rand)
[1] 58

并放心,nrow(df)>1。我认为正确的解决方案可能与apply函数有关吗?

2 个答案:

答案 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