我试图将数据框中所有列的名称更改为同一数据框中一行的值。 当我在R中尝试此操作时,它将更改为不同的数字。
这是我的数据:
id | user_id | sum | date_created | date_picked
这是date_created
的输出:
date_picked
我发现很难插入数据的QS201EW... Group X X.1
1 Data
2 Area All categories: Ethnic group White
3 Date : 2011
,因为它太大了,但是所有列都是因素-这是无法更改列名的问题吗?。
这是我之前尝试过的代码:
str
答案 0 :(得分:1)
是的,这是因为数据框中的所有值都是因数。
考虑此示例
df <- data.frame(col1 = LETTERS[1:3], col2 = LETTERS[4:6], col3 = LETTERS[7:9])
是
df
# col1 col2 col3
#1 A D G
#2 B E H
#3 C F I
现在,如果您要分配名称
names(df) <- df[2, ]
df
# 2 2 2
#1 A D G
#2 B E H
#3 C F I
尝试unlist
数据,然后使用as.character
分配名称。
names(df) <- as.character(unlist(df[2, ]))
df
# B E H
#1 A D G
#2 B E H
#3 C F I
答案 1 :(得分:1)
您的列是因素,这就是为什么您的代码不起作用的原因。 试试这个:
colnames(df) <- as.character(df[2, ])
但是您可以在问题开始之前解决问题。根据读取数据的方式,您可以跳过某些行。例如,如果您使用read.table
读取数据,则可以指定skip
参数:
mydata <- read.table("mydata.csv", sep = ",", skip = 2)
这将跳过csv
文件的前两行。
此外,如果您想避免使用因素(大多数情况下都是如此),则可以使用stringsAsFactors = F
。