You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何折叠含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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 18:35:16