我有一个CSV文件,需要读入R,转置(交换列的行),然后进行处理。
这是文件的形式(不是列实际延伸到2014年):
Year,1970,1971,1972
Variable one,1,2,3
Variable two,11,22,33
Variable three,111,222,333
当我阅读它时,这些年份的前缀是'X'
> rc <- read.csv("file.csv")
> rc
Year X1970 X1971 X1972
1 Variable one 1 2 3
2 Variable two 11 22 33
3 Variable three 111 222 333
当我转置数据时,所有内容都被视为字符串。
> t(rc)
[,1] [,2] [,3]
Year "Variable one" "Variable two" "Variable three"
X1970 " 1" " 11" "111"
X1971 " 2" " 22" "222"
X1972 " 3" " 33" "333"
如果删除csv文件中行的名称,则日期仍然以X为前缀,但转置不会将数据更改为字符串。
那么我该如何正确地做到这一点,以便年份是数字,而转置不会创建字符串。
答案 0 :(得分:5)
只需使用check.names = FALSE
语句添加read.csv
(但这不是一个好主意,因为在这种情况下,您最终会遇到语法无效的名称):
X <- read.csv(text = "Year,1970,1971,1972
Variable one,1,2,3
Variable two,11,22,33
Variable three,111,222,333", check.names = FALSE)
X
# Year 1970 1971 1972
# 1 Variable one 1 2 3
# 2 Variable two 11 22 33
# 3 Variable three 111 222 333
关于转置数据,首先删除字符串值,然后将它们重新引入为列名:
tX <- t(X[-1])
colnames(tX) <- X[[1]]
tX
# Variable one Variable two Variable three
# 1970 1 11 111
# 1971 2 22 222
# 1972 3 33 333