我正在使用R来转换excel文件(mydata.xls)中的数据框。 原始数据框如下所示:
ID AB_1 AB_2 AB_3 AB_4 AB_5
Variable1 1 2 3 4 5
Variable2 1.5 2.8 4.5 5.6 7.8
这就是我想要实现的目标:
ID Variable1 Variable2
AB_1 1 1.5
AB_2 2 2.8
AB_3 3 4.5
AB_4 4 5.6
AB_5 5 7.8
根据对similar post in the past的回复,这是我的所作所为。
Library(XLConnect)
x=loadWorkbook("mydata.xls")
y=readWorksheet(x,"Summary")
z=setNames(data.frame(t(y[,-1])),y[,1])
然而,这是我得到的:
z
Variable1 Variable2
AB_1 1 1.5
AB_2 2 2.8
AB_3 3 4.5
AB_4 4 5.6
AB_5 5 7.8
注意到两个问题: 1.“ID”丢失了。 2.当我检查新数据框的第一列时,返回了第二列(见下文)
z[,1]
[1] 1 2 3 4 5
我想知道1)“ID”和整个专栏发生了什么? 2)如何解决问题?
答案 0 :(得分:2)
如果要在使用col.names形成row.names时克服t.data.frame
的默认行为,而是创建一个名为" ID"的列。然后使用cbind.data.frame函数:
cbind( ID=row.names(z), z)
#--------------
ID Variable1 Variable2
AB_1 AB_1 1 1.5
AB_2 AB_2 2 2.8
AB_3 AB_3 3 4.5
AB_4 AB_4 4 5.6
AB_5 AB_5 5 7.8
在控制台上(或在data.frame结构中)打印的内容中没有row.names列的名称,所以当你来到" Excel-world"不会完全令人满意。或者,你可以学会像真正的useR一样思考并使用row.names(z)
。