使用R进行数据帧转换

时间:2016-06-15 16:37:00

标签: r dataframe data-analysis

我有以下格式的记录:

      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

有人可以帮助我实现这个目标吗?

2 个答案:

答案 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"))