我有以下格式的记录:
ATL ORD DEN MSP DFW DTW
18554 711.179 382.411 9485.764 9247.194 7148.939
我需要将它们转换为格式低于
的数据框 city value
ATL 18554
ORD 711.179
DEN 382.411
MSP 9485.764
DFW 9247.194
DTW 7148.939
我正在使用R并尝试使用简单的数据帧转换语法data.frame(),但我得到的结果如下:
value
ATL 18554
ORD 711.179
DEN 382.411
MSP 9485.764
DFW 9247.194
只有'值'在结果数据框中形成新列,但未定义城市列。我认为城市在结果数据框架中被视为索引(尽管不确定)。
df [[1]]让我产生:
18554
711.179
382.411
9485.764
9247.194
7148.939
但这应该是df [[2]]的结果,df [[1]]应该给我以下结果:
ATL
ORD
DEN
MSP
DFW
DTW
有人可以帮助我实现这个目标吗?
答案 0 :(得分:2)
我猜你的第一个数据是一个命名数字。
当您使用data.frame()
功能时,您的row.names
将设置为名称。这样做:
df$city <- row.names(df)
row.names(df) <- c(1:nrow(df))
那应该解决它。
答案 1 :(得分:2)
假设您的原始数据是命名向量vec1
,您可以尝试:
df <- data.frame(city=names(vec1), value=vec1, row.names = NULL)
> df
# city value
#1 ATL 18554.000
#2 ORD 711.179
#3 DEN 382.411
#4 MSP 9485.764
#5 DFW 9247.194
#6 DTW 7148.939
数据强>
vec1 <- setNames(c(18554, 711.179, 382.411, 9485.764, 9247.194, 7148.939),
c("ATL", "ORD", "DEN", "MSP", "DFW", "DTW"))