我有4个数据集,我想获得每个数据集的每个组的百分比。使用prop.table(table(df1$group))
更改df2$group
等等,这一切都很好,但我想在我的表格上添加标签。因此,我已将列转换为factor
并分配了相应的levels
,但这涉及为每个数据集分配levels
。
我已尝试使用lapply
,但我最终使用NA
s作为因素levels
。
以下是一些数据
df1 <- data.table(id=(1:100), group= sample(5,100, replace=T))
df2 <- data.table(id=(1:100), group= sample(5,100, replace=T))
df3 <- data.table(id=(1:100), group= sample(5,100, replace=T))
df4 <- data.table(id=(1:100), group= sample(5,100, replace=T))
df1$group <- as.factor(df1$group)
df2$group <- as.factor(df2$group)
df3$group <- as.factor(df3$group)
df4$group <- as.factor(df4$group)
我的尝试:
df <- list(df1,df2,df3,df4)
df <- lapply(df,function(x) x[,group:=factor(group, levels = c("A","B","C","D","E"))])
但这会返回levels
的更改,但会生成NAs
。
数据全部在data.tables
,我对factors
每data.table
感兴趣。我也有兴趣在多个class
中更改多个变量的data.tables
,但为了简单起见,这可能是另一个问题。
答案 0 :(得分:1)
我们需要指定与原始数据中存在的labels
对应的levels
lapply(df, function(x) x[, group := factor(group, levels = 1:5, labels = LETTERS[1:5])])