r - 添加空列以获得一定数量的列到现有数据框
问题描述
我有一个可变数量 F 的数据框,F 可以从 1 变为 X
df1 <- data.frame(F1=c(1,5,NA,9),F2=c(2,5,"a",NA),F3=c(1,NA,"o",NA))
df1
F1 F2 F3
1 1 2 1
2 5 5 <NA>
3 NA a o
4 9 <NA> <NA>
但我需要我的数据框有一定数量的列,比如说 30。如果 X 小于 30,那么我需要添加所需的列数(具有 NA 值)以形成 30 列。
> df1
F1 F2 F3 F4......F30
1 1 2 1 <NA>.....<NA>
2 5 5 <NA> <NA>.....<NA>
3 NA a o <NA>.....<NA>
4 9 <NA> <NA> <NA>.....<NA>
谢谢!
解决方案
我们可以在数据集上使用setdiff
并将names
它们分配给NA
df1[setdiff(paste0("F", 1:30), names(df1))] <- NA
-输出
> df1
F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 F16 F17 F18 F19 F20 F21 F22 F23 F24 F25 F26 F27 F28 F29 F30
1 1 2 1 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
2 5 5 <NA> NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
3 NA a o NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
4 9 <NA> <NA> NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
推荐阅读
- c# - ASP.NET MVC C# 多个 URL 路由配置控制器操作
- java - 替换显示为编码的特殊字符
- mariadb - 使用相同的数据和选择语句时,ignite 比 mariadb 慢吗?
- azure - Azure Webapp 请求在 4 分钟后返回 502
- javascript - 转译到 ie 11 fetch 不是未定义的
- c++ - C++ 计算器运算符
- python - 如何使用loadTestsFromTestCase通过BaseClass加载SubClass?
- c# - C# 和统一。一边转动相机一边拍照
- php - 通过codeigniter生成管道分隔文件
- php - 从 Laravel 连接到 SQL Server