R 从数据帧中的第一行创建数据帧的标题

R 从数据帧中的第一行创建数据帧的标题,r,indexing,R,Indexing,假设我有一个数据帧: a <- data.frame(a=c("f", 2, 3), b=c("g", 3, 7), c=c("h", 2, 4)) 我没有完全了解正在发生的事情。有谁能解释并帮助我正确的方法吗?试试这个: > colnames(a) <- unlist(a[1,]) > a f g h 1 f g h 2 2 3 2 3 3 7 4 >colnames(a)a f g h 1 f g h 2 2 3 2 3 3 7 4 试试这个: > co

假设我有一个数据帧:

a <- data.frame(a=c("f", 2, 3), b=c("g", 3, 7), c=c("h", 2, 4))
我没有完全了解正在发生的事情。有谁能解释并帮助我正确的方法吗?

试试这个:

> colnames(a) <- unlist(a[1,])
> a
  f g h
1 f g h
2 2 3 2
3 3 7 4
>colnames(a)a
f g h
1 f g h
2 2 3 2
3 3 7 4
试试这个:

> colnames(a) <- unlist(a[1,])
> a
  f g h
1 f g h
2 2 3 2
3 3 7 4
>colnames(a)a
f g h
1 f g h
2 2 3 2
3 3 7 4

a的列是各列具有不同级别的因子。R将它们转换为int。因为,对于每一列,字母最后一个字母数字出现,它被赋值为3

试一试


a的列是每个列具有不同级别的因子。R将它们转换为int。因为,对于每一列,字母最后一个字母数字出现,它被赋值为3

试一试

门卫软件包提供了最干净的方法,可以将任何数据行作为列名向上移动



“看门人”软件包提供了将任何数据行作为列名向上移动的最干净方法。

不确定原因。。但是您可以将
a[1,]
包装到
unlist()
中,为什么会有这个data.frame?看起来是数据导入/创建期间应该解决的问题。@Roland I导入一个包含因子和数字数据的csv。因此,我不能使用矩阵…如果这是您的意思。如果您导入CSV,
read.CSV
应该识别列标题。是的。但是第一行不包含实际的头,而是包含元数据blabla。我必须清理坏的辅助数据。不确定原因。。但是您可以将
a[1,]
包装到
unlist()
中,为什么会有这个data.frame?看起来是数据导入/创建期间应该解决的问题。@Roland I导入一个包含因子和数字数据的csv。因此,我不能使用矩阵…如果这是您的意思。如果您导入CSV,
read.CSV
应该识别列标题。是的。但是第一行不包含实际的头,而是包含元数据blabla。糟糕的二次数据我必须清理。我不认为这里需要
水滴状物,是吗?你是对的@AnandaMahto,现在是早上8:20,现在考虑R还为时过早,需要一杯咖啡,谢谢你指出这一点。或者对于像我这样的人来说,晚上8点,考虑R:-)我认为这里不需要
水滴状物,是吗?你说得对@AnandaMahto,现在是早上8:20,现在想R还为时过早,需要一杯咖啡,谢谢你指出这一点。或者对像我这样的人来说,晚上8点,想R:-)这个答案中的
字符是什么?没什么!完全没有它就可以工作!似乎
names()
将因子转换为字符本身。。。不幸的是,在这一点上,这个答案与Jilber的答案是一样的,在你之前几分钟发布,与rawr在评论中某一点发布的答案一样。。。哦……好吧,你救了我的命……但这里发生了什么?我正在清理一个大的Excel文件,这个例子对我没有帮助。
as.character
在这个答案中做了什么?什么都没有!完全没有它就可以工作!似乎
names()
将因子转换为字符本身。。。不幸的是,在这一点上,这个答案与Jilber的答案是一样的,在你之前几分钟发布,与rawr在评论中某一点发布的答案一样。。。哦……好吧,你救了我的命……但这里发生了什么?我正在清理一个很大的Excel文件,这个示例对我没有帮助。。
> colnames(a) <- unlist(a[1,])
> a
  f g h
1 f g h
2 2 3 2
3 3 7 4
names(a) = as.character(unlist(a[1,]))
names(a)
janitor::row_to_names(a,1)