我试图将大量的回归系数放入数据帧中,然后进行乳胶化。但是,我遇到了以下问题,在将一些值粘贴到置信区间后我无法理解:
> str(q2)
'data.frame': 5 obs. of 7 variables:
$ name : Factor w/ 5 levels "1","2",..: 1 2 3 4 5
$ Intercept: Factor w/ 5 levels "15.4533848220452",..: 1 2 3 4 5
$ Int.lb : Factor w/ 5 levels "14.2125590292247",..: 1 2 3 4 5
$ Int.ub : Factor w/ 5 levels "17.1483176230248",..: 1 2 3 4 5
$ BAC : Factor w/ 5 levels "-0.317030740768092",..: 1 2 3 4 5
$ Bac.lb : Factor w/ 5 levels "-0.789518593140102",..: 1 2 3 4 5
$ Bac.ub : Factor w/ 5 levels "0.0844578956839408",..: 1 2 3 4 5
> str(q3)
'data.frame': 5 obs. of 2 variables:
$ CI: Factor w/ 5 levels "(12.17,14.34)",..: 2 1 5 4 3
$ ci: Factor w/ 5 levels "(-0.31,0.74)",..: 3 5 2 4 1
> q4<-as.data.frame(cbind(name=q2$name,Intercept=q2$Intercept,Interecpt.95.CI=q3$CI,BAC=q2$BAC,BAC.95.CI=q3$ci))
> q4
name Intercept Interecpt.95.CI BAC BAC.95.CI
1 1 1 2 1 3
2 2 2 1 2 5
3 3 3 5 3 2
4 4 4 4 4 4
5 5 5 3 5 1
> str(q4)
'data.frame': 5 obs. of 5 variables:
$ name : int 1 2 3 4 5
$ Intercept : int 1 2 3 4 5
$ Interecpt.95.CI: int 2 1 5 4 3
$ BAC : int 1 2 3 4 5
$ BAC.95.CI : int 3 5 2 4 1
即。为什么q4变量突然发生变化?
答案 0 :(得分:2)
简短回答是转换为内部数字代码的因素。它发生在cbind()
电话中:
R> set.seed(1)
R> dat <- data.frame(A = factor(sample(1:5, 10, rep = TRUE)),
+ B = factor(sample(100:200, 10, rep = TRUE)))
R> head(dat)
A B
1 2 120
2 2 117
3 3 169
4 5 138
5 2 177
6 5 150
R> str(dat)
'data.frame': 10 obs. of 2 variables:
$ A: Factor w/ 5 levels "1","2","3","4",..: 2 2 3 5 2 5 5 4 4 1
$ B: Factor w/ 9 levels "117","120","138",..: 2 1 5 3 7 4 6 9 3 8
R> cbind(name = dat$A, foo = dat$B)
name foo
[1,] 2 2
[2,] 2 1
[3,] 3 5
[4,] 5 3
[5,] 2 7
[6,] 5 4
[7,] 5 6
[8,] 4 9
[9,] 4 3
[10,] 1 8
原因是cbind()
生成一个矩阵,这就是转换发生的地方。在这种情况下创建新数据框会更容易:
R> dat2 <- data.frame(name = dat$A, foo = dat$B)
R> dat2
name foo
1 2 120
2 2 117
3 3 169
4 5 138
5 2 177
6 5 150
7 5 172
8 4 200
9 4 138
10 1 178
而不是cbind()
后跟as.data.frame()
对来电。
但问题的真正根源是将数字数据存储为q2
中的因子。如何在R中读取或生成这些数据?如果读入R,为什么最终会成为一个因素呢?通常是列中的数据都是数字R将读取值作为数值。如果数据列中有任何类似文本的内容,它将转换为一个因子。所以我试着解决这个问题 - 为什么q2
因素中的数据 - 因为它可能表明读取或生成您不知道的数据存在一些问题。