我有L:
Var1 Freq
2 1103 6
6 1107 10
10 1112 7
21 1125 6
24 1129 10
31 1137 5
Run Code Online (Sandbox Code Playgroud)
并且pct:
head(pct)
[1] 0.806 0.706 0.781 0.800 0.655 0.844
Run Code Online (Sandbox Code Playgroud)
pct 最初是数字,而不是因素:
str(pct)
num [1:68] 0.806 0.706 0.781 0.8 0.655 0.844
Run Code Online (Sandbox Code Playgroud)
但是,一旦我结合L,并pct连同
pct_by <- as.data.frame(cbind(as.vector(L$Var1), pct))
Run Code Online (Sandbox Code Playgroud)
我看到这个新的数据帧pct_by包含pct因子,如下所示:
str(pct_by
'data.frame': 68 obs. of 2 variables:
$ V1: Factor w/ 68 levels "1103","1107",..: 1 2 3 4 5 6 7 8 9 10 ...
$ pct: Factor w/ 41 levels "0.375","0.529",..: 34 19 29 33 10 37 27 9 12 11 ...
Run Code Online (Sandbox Code Playgroud)
为什么是这样?我怎样才能改变pct_by$pct,因为它是最初的数字,而不是一个因素?
完全不要使用cbind.这是一个坏习惯,人们似乎从旧的教程或其他东西.只需使用:
pct_by <- data.frame(L$Var1, pct)
Run Code Online (Sandbox Code Playgroud)
问题是,cbind更喜欢返回矩阵,而矩阵只能容纳一种数据类型.如果其中一个变量是一个字符串,它们将全部转换为字符串,然后在放入data.frame时转换为因子.
| 归档时间: |
|
| 查看次数: |
503 次 |
| 最近记录: |