首页 > 解决方案 > 在 r 中使用强制转换函数时选择了未定义的列

问题描述

我的数据框包含两列:

               V1            V2
1         Austria  9.920692e-01
2         Austria  2.037756e+02
3         Austria -2.187730e+02
4         Belgium  7.590994e-01
5         Belgium  8.890127e+01
6         Belgium -1.796152e+02
7        Bulgaria  0.000000e+00
8        Bulgaria  0.000000e+00
9        Bulgaria  0.000000e+00
10        Croatia  3.763559e-01
11        Croatia -4.706601e+00
12        Croatia -3.878768e+02
13         Cyprus  0.000000e+00
14         Cyprus  0.000000e+00
15         Cyprus  0.000000e+00
16 Czech Republic           NaN
17 Czech Republic  0.000000e+00
18 Czech Republic           NaN
19        Denmark  0.000000e+00
20        Denmark  0.000000e+00
21        Denmark  0.000000e+00
22        Estonia  9.744620e-01
23        Estonia -2.265193e+02
24        Estonia -1.348241e+03

我需要让它变宽。像这样的东西:

     Austria  9.920692e-01 2.037756e+02 -2.187730e+02
     Belgium  7.590994e-01 8.890127e+01 -1.796152e+02

我尝试使用强制转换功能:

cast(df, V1 ~ V2)

结果我得到:

Using V2 as value column.  Use the value argument to cast to override this choice
error `[.data.frame`(data, , variables, drop = FALSE) :
  undefined columns selected

我应该如何解决我的问题

标签: rlistdataframelongtable

解决方案


基地你可以使用unstack

t(unstack(df[2:1]))
#                    [,1]        [,2]       [,3]
#Austria        0.9920692  203.775600  -218.7730
#Belgium        0.7590994   88.901270  -179.6152
#Bulgaria       0.0000000    0.000000     0.0000
#Croatia        0.3763559   -4.706601  -387.8768
#Cyprus         0.0000000    0.000000     0.0000
#Czech_Republic       NaN    0.000000        NaN
#Denmark        0.0000000    0.000000     0.0000
#Estonia        0.9744620 -226.519300 -1348.2410

数据:

df <- read.table(header=T, text="               V1            V2
1         Austria  9.920692e-01
2         Austria  2.037756e+02
3         Austria -2.187730e+02
4         Belgium  7.590994e-01
5         Belgium  8.890127e+01
6         Belgium -1.796152e+02
7        Bulgaria  0.000000e+00
8        Bulgaria  0.000000e+00
9        Bulgaria  0.000000e+00
10        Croatia  3.763559e-01
11        Croatia -4.706601e+00
12        Croatia -3.878768e+02
13         Cyprus  0.000000e+00
14         Cyprus  0.000000e+00
15         Cyprus  0.000000e+00
16 Czech_Republic           NaN
17 Czech_Republic  0.000000e+00
18 Czech_Republic           NaN
19        Denmark  0.000000e+00
20        Denmark  0.000000e+00
21        Denmark  0.000000e+00
22        Estonia  9.744620e-01
23        Estonia -2.265193e+02
24        Estonia -1.348241e+03")

推荐阅读