我很难适应我之前用过的脚本并按顺序重新编码标记为data.tables。
我在R中有一系列data.tables,它们按顺序标记为:df1
,df2
,df3
等。然后我会应用特定的(并且不一致的)规则在名为data.tables
和status
的{{1}} {。}}中创建新变量。
我想做的是:
csat
变量重新编码为新变量csat
,csat
,csat_d
和id
)我正在尝试在下面的脚本中解决第1-3点,并且不知道如何实现#4。
已编辑:
status
我不确定使用df_names<-c(df,df2,df3) # Create list of data.tables
csat_vars<-c("CustomerId","csat","csat_d","status") # Create list of 4 variables
out <- lapply(1:length(df_names), function(idx) {
d <- df_names[idx]
d$csat_d <- recode(d$csat,"1:5=0;6:7=1;NA=NA;")
d <- subset(d, select=c(csat_vars))
})
或data.table
(这些是小型数据集)是否更好,所以欢迎任何帮助。
这里的迷你数据集:
data.frame
答案 0 :(得分:0)
猜测我会说你想要这样做......
out <- lapply( ll , function(x) x[ , csat := recode( csat , ,"1:5=0;6:7=1;NA=NA;" ) ][ , csat_vars , with = FALSE ] )
作为一个玩具工作的例子,我展示了这个:
df1 <- data.table( a = 1 , b = 2 , c = 3 )
df2 <- data.table( a = 1 , b = 2 , c = 3 )
ll <- list(df1,df2)
vars <- c( "a" , "c" )
# Recode column 'c' to 10, and then subset data.table to only columns 'a' and 'c'
lapply( ll , function(x) x[ , c := 10 ][ , vars , with = FALSE ] )
#[[1]]
# a c
#1: 1 10
#[[2]]
# a c
#1: 1 10