r - 将数据框转换为 R 中具有适当标签的列表
问题描述
我有一个如上所述的数据表。在我将它读入 R 后,它显示如下:
A1 V2 B1 V4 C1 V6 D1 V8
1: 0.0 0.00000000 0.0 0.00000000 0.0 0.00000000 0.0 0.00000000
2: 0.2 -0.00380627 0.2 -0.00819362 0.2 0.00111832 0.2 0.00121747
3: 0.4 -0.00331354 0.4 -0.00525695 0.4 0.00064048 0.4 -0.00192659
4: 0.6 -0.00868297 0.6 -0.01096702 0.6 -0.00173567 0.6 -0.00113128
5: 0.8 -0.01042633 0.8 -0.01036590 0.8 -0.00542573 0.8 -0.00477296
前两列属于 A1 类,后两列属于 B1 类。我想将列转换为 A1.1、A1.2、B1.1、B1.2、... 有什么建议吗?太感谢了。
解决方案
您可以采用备用列名称并将 1:2 作为后缀添加到它们。
cols <- names(df)[c(TRUE, FALSE)]
cols
#[1] "A1" "B1" "C1" "D1"
names(df) <- c(t(outer(cols, 1:2, paste, sep = '.')))
df
# A1.1 A1.2 B1.1 B1.2 C1.1 C1.2 D1.1 D1.2
#1: 0.0 0.000000 0.0 0.000000 0.0 0.0000000 0.0 0.000000
#2: 0.2 -0.003806 0.2 -0.008194 0.2 0.0011183 0.2 0.001217
#3: 0.4 -0.003314 0.4 -0.005257 0.4 0.0006405 0.4 -0.001927
#4: 0.6 -0.008683 0.6 -0.010967 0.6 -0.0017357 0.6 -0.001131
#5: 0.8 -0.010426 0.8 -0.010366 0.8 -0.0054257 0.8 -0.004773
数据
df <- structure(list(A1 = c(0, 0.2, 0.4, 0.6, 0.8), V2 = c(0, -0.00380627,
-0.00331354, -0.00868297, -0.01042633), B1 = c(0, 0.2, 0.4, 0.6,
0.8), V4 = c(0, -0.00819362, -0.00525695, -0.01096702, -0.0103659
), C1 = c(0, 0.2, 0.4, 0.6, 0.8), V6 = c(0, 0.00111832, 0.00064048,
-0.00173567, -0.00542573), D1 = c(0, 0.2, 0.4, 0.6, 0.8), V8 = c(0,
0.00121747, -0.00192659, -0.00113128, -0.00477296)),
class = "data.frame", row.names = c("1:", "2:", "3:", "4:", "5:"))
推荐阅读
- javascript - 如何在公会中踢所有人?
- javascript - 如何检查 JavaScript 对象是否彼此不同
- azure - 如何将哈希表查询结果输出到 Out-GridView?
- wordpress - 如何在 cpanel 中安装免费 ssl
- java - Azure 文件共享 SAS 令牌签名未按预期生成,如何为文件对象生成签名以匹配门户中生成的签名?
- javascript - 为什么使用 discord.js v12 向玩家发送消息时会出错?
- azure - 如何使用图形 api 知道当前登录的用户是否是租户管理员
- python - 我在哪里将图像目录放在 python 中?
- ffmpeg - 尝试将多个图像转换为视频
- wcf - 使用 IIS 将 WCF 服务从一台服务器路由到另一台服务器