我有一个数据集,df,有一系列变量,这些变量测量在任何给定情况下发生的频率。我也有一个对象,这些变量的列表,让我们称之为c(v1, v2, v3, v4, v5)。对于每个变量,我希望在dataset中创建一个新变量,它是频率测量是否大于零的二进制指示符。这可以很容易地手工完成:
df$v1binary <- 0
df$v1binary[df$v1 > 0] <- 1
#etc for each variable但是,我的变量列表非常大,而且是动态的,所以我想找到一个更容易复制的解决方案。有办法这样做吗?也许用了一个for循环?
下面是一些可供使用的数据:
df <- data.frame(CaseID = seq(1,10,1), v1 = sample(0:9), v2 = sample(0:9), v3 = sample(0:9), v4 = sample(0:9), v5 = sample(0:9))
varlist <- c("v1", "v2", "v3", "v4", "v5")发布于 2015-10-28 01:14:14
lapply和[<-.data.frame的简单用例
df[paste0(varlist,'binary')] <- lapply(df[varlist], function(x) as.integer(x>0))https://stackoverflow.com/questions/33381259
复制相似问题