如何折叠含NA的DataFrame列,将4列转换为3列?
移除DataFrame中的NA值并转换为3列
原始数据
先还原你的原始DataFrame:
df <- structure( list( Practical1 = c("65", "85", NA, "60", NA), Practical2 = c("55", "75", "100", NA, "35"), Practical3 = c(45.45, 50, 86.36, 40, 72.73), Practical4 = c(NA, NA, "92", "79", "71") ), class = "data.frame", row.names = c(NA, -5L) )
实现代码
通过逐行剔除NA值,再将结果转置为3列的DataFrame,代码如下:
# 逐行过滤NA,转置后转为数据框 result_df <- as.data.frame(t(apply(df, 1, function(row) row[!is.na(row)]))) # 重命名列名 colnames(result_df) <- c("pracA", "pracB", "pracC") # 可选:统一转换为数值类型(原始数据混合了字符和数值) result_df <- type.convert(result_df, as.is = FALSE)
输出结果
运行后得到的结果与你期望的一致:
pracA pracB pracC 1 65 55 45.45 2 85 75 50.00 3 100 86.36 92 4 60 40 79 5 35 72.73 71
内容的提问来源于stack exchange,提问作者adkane
相关产品推荐
相关产品推荐

