连接列名和R中的第一行

连接列名和R中的第一行,r,R,我有一个3列的数据框 data.frame(A=c(1, 2, 3), B=c('a', 'b', 'c'), C=c(22, 21, 22)) 我想将第一行与列名合并作为最终列名 所以列A将被命名为“A_1”,并且将有值(A,22)等等。。。 有人能帮我吗 [编辑-回答] 我通过以下方式实现了这一点: columns=paste(名称(df),as.matrix(df[1,]) columns%>%str_remove('NA')#删除我在第一行的“NA” colnames(df)=列 我

我有一个3列的数据框

data.frame(A=c(1, 2, 3), B=c('a', 'b', 'c'), C=c(22, 21, 22))
我想将第一行与列名合并作为最终列名 所以列A将被命名为“A_1”,并且将有值(A,22)等等。。。 有人能帮我吗

[编辑-回答] 我通过以下方式实现了这一点:

columns=paste(名称(df),as.matrix(df[1,])

columns%>%str_remove('NA')
#删除我在第一行的“NA”
colnames(df)=列


我认为这可以解决您的问题:

library(dplyr)
library(stringr)

df = data.frame('A' = c(NA, 1, 2),
                'B' = c('%', 6.49, 6.42),
                'C' = c('mg/l', 5.7, 8.4))
cols = df %>%
  colnames() %>%
  paste(df[1, ], sep = '_') %>%
  str_remove('_NA')

df %>%
  'colnames<-'(cols) %>%
  slice(-1) %>%
  apply(2, as.numeric) %>%
  as.data.frame()

请注意,从列名中删除
NA
值以保持其干净非常重要。

是否可能与行和列混淆?这就是你的意思吗

df <- data.frame(A=c(1, 2, 3), B=c('a', 'b', 'c'), C=c(22, 21, 22))
colnames(df) <- paste(sep = '_', colnames(df), as.character(unlist(df[1,])))
df <- df[-1, ]
df
#>   A_1 B_a C_22
#> 2   2   b   21
#> 3   3   c   22
df 3 c 22

您能清楚地显示您的预期输出吗?您可以使用:paste0(名称(df),“,”df,“,”df[1,,drop=T])获取列名,但不确定之后需要什么?列A将被称为“A_1”,它是与列A的第一行元素(值1)连接在一起的原始名称“A”第一行之后的行将继续使用它们的值。这更清楚吗?对不起,如果没有,我可以试着发布一些图片或解释better@KarthikS在此之后,我希望我的原始数据帧具有“新”列名称作为列名,因此只需将输出添加到原始数据帧。问题是第一行也有像“A”这样的字母,在代码中它们不是作为字母添加的,而是作为数字添加的(奇怪!)嗨!非常感谢你的回答!实际上,我不希望列具有“1:ncol(.),而是数据帧的第一行。在这个示例中,我输入了1,2,3,但是我的数据在第一行有值,比如“%”或“mg”?第一行的值是什么?这是一个csv文件,其中“%”是分隔符:,,,,,,,,%,mg/l,mg/l,mg/l,mg/kg,mg/kg,mg/kg,%,mg/kg,mg/kg,mg/kg,mg/kg,%,mg/kg,mg/kg,%,mg/kg,%,mg/kg,mg/kg,%,mg/kg,mg/kg,mg/kg,mg/kg,mg/kg,mg/kg,mg/kg,mg/kg,mg/kg,mg/kg,mg/kg,mg/kg,mg/kg,mg/kg,mg/kg,mg/kg,mg/kg,mg/kg你不能分享你的数据吗?很难帮助你,因为我不明白你的真正意思。谢谢你,我已经做到了!这是在编辑后:)谢谢你的帮助,这是很重要的!!!它正在将符号转换为数字。我用我的数据中的代码输出更新了这个问题。你能检查一下吗?啊,我现在明白你的意思了。以数字形式出现的列是因为这些列存储为“因子”。我编辑了我的答案来解决这个问题。你也需要小心处理其余的数据-它看起来像数字,但因为它被作为一个因子读入,所以它不像它看起来那样,计算可能会给出奇怪的答案。仍然不起作用:(继续使用数字,而不是“%”或“mg”列=粘贴(名称(df),如.matrix(df)[1,]))colnames(df)=列这是可行的!现在我需要忽略“NA”值
df <- data.frame(A=c(1, 2, 3), B=c('a', 'b', 'c'), C=c(22, 21, 22))
colnames(df) <- paste(sep = '_', colnames(df), as.character(unlist(df[1,])))
df <- df[-1, ]
df
#>   A_1 B_a C_22
#> 2   2   b   21
#> 3   3   c   22