我必须要数据表。数据表1有两个变量和561个观测值,而数据表2有563个变量和10,000个观测值。我试图弄清楚如何从数据表1中观察code_name
变量来重命名数据表2中的变量。
我有什么:
数据表1
code code_name
11 rasf
04 iadf
27 pqwr
09 pklf
86 irmw
30 pwql
数据表2
activity subject V1 V2 V3 V4 V5 V6
5 2 0.29 0.19 5.3 1.8 8.3 0.3
9 7 0.11 0.10 7.8 2.0 0.5 0.9
9 7 0.19 1.10 8.0 1.9 0.4 0.7
我需要什么:
activity subject rasf iadf pqwr pklf irmw pwql
5 2 0.29 0.19 5.3 1.8 8.3 0.3
9 7 0.11 0.10 7.8 2.0 0.5 0.9
9 7 0.19 1.10 8.0 1.9 0.4 0.7
我做了什么:
#Extracts all rows and just column two from the data table 1
new_data_table1 <- data_table1[,2]
#Set names on data table 2 to build the final data
final_data <- setnames(data_table2, names(data_table2), c("activity", "subject", new_data_table1))
我的代码存在的问题是,当我从数据表1中提取所有行时,它会给出一个长列表,显示结构的向量和数据的标签。因此,当我运行我的代码时,我得到了这个表:
activity subject 243 244 245 246 247 248
5 2 0.29 0.19 5.3 1.8 8.3 0.3
9 7 0.11 0.10 7.8 2.0 0.5 0.9
9 7 0.19 1.10 8.0 1.9 0.4 0.7
变量的新名称是数字,因为它们是结构而不是标签。
答案 0 :(得分:3)
我们可以使用names函数根据行
命名变量names(df1)[3:length(df1)] <- df$code_name
df1
activity subject rasf iadf pqwr pklf irmw pwql
1 5 2 0.29 0.19 5.3 1.8 8.3 0.3
2 9 7 0.11 0.10 7.8 2.0 0.5 0.9
3 9 7 0.19 1.10 8.0 1.9 0.4 0.7
df
code code_name
1 11 rasf
2 4 iadf
3 27 pqwr
4 9 pklf
5 86 irmw
6 30 pwql
df1
activity subject V1 V2 V3 V4 V5 V6
1 5 2 0.29 0.19 5.3 1.8 8.3 0.3
2 9 7 0.11 0.10 7.8 2.0 0.5 0.9
3 9 7 0.19 1.10 8.0 1.9 0.4 0.7
答案 1 :(得分:1)
我们可以使用grep
来查找以&#34; V&#34;开头的第二个数据集中的列名索引。然后是数字,并将其更改为第一个数据集中的第二列值。
names(df2)[grep("^V\\d+", names(df2))] <- as.character(df1[,2] )