r - 将几个数据框的最后一列转换为 R 中的一个因子
问题描述
我在 R、df1、df2、df3 中有三个数据框,它们包含不同的数据,但是,最后一列包含每个数据集的目标变量。但是,在每种情况下,最后一列都是整数,我希望它成为一个因素。我知道我可以执行以下代码将列转换为因子:
df1[,'lascoldf1'] <-factor(df1[,'lastcoldf1'])
df2[,'lascoldf2'] <-factor(df2[,'lastcoldf2'])
df3[,'lascoldf3'] <-factor(df3[,'lastcoldf3'])
但是,这似乎有点低效。此外,最后一个 colname 并不总是相同的名称,并且每个数据集都有不同数量的列,所以我只需要一种引用最后一列的方法。我发现了这种方式,因此可能需要以下伪代码:
for (df in c(df1,df2,df3)){
index = df[,ncol(df)]
lapply(df[,index] , factor)
}
但是,我似乎无法让它正常工作。
解决方案
将数据框放入 alist
和lapply
用于ncol
标识最后一列。
L <- lapply(list(df1, df2, df3), function(x) {x[,ncol(x)] <- as.factor(x[,ncol(x)]);x})
str(L[[1]])
# 'data.frame': 3 obs. of 4 variables:
# $ X1: int 1 2 3
# $ X2: int 4 5 6
# $ X3: int 7 8 9
# $ X4: Factor w/ 3 levels "10","11","12": 1 2 3
数据:
df1 <- df2 <- df3 <- data.frame(matrix(1:12, 3, 4))
推荐阅读
- php - 从 PHP 中的 execute_db 返回的数组制作 HTML 表 - 条目重复
- python - 将numpy布尔数组转换为二进制数组
- c - 如何识别导致分段错误的原因
- node.js - 将不同的 package.json 应用于不同的操作系统( window , mac)
- php - 在 Hack PHP 中限制函数覆盖的不变式
- .net - 该模块应包含程序集清单 JNI4net 错误
- web-scraping - 使用 Node.js 抓取实时流媒体视频
- java - 试图复制一个数组,在我对原件进行排序之前对副本进行排序,然后在对原件进行排序时比较副本和原件
- vsto - 如何通过文本字段在 Excel VSTO 加载项中获取用户的数据范围输入?
- python - Openpyxl将列表项输入Excel电子表格列