编辑:清晰度
当我将新列附加到现有data.frame时,列的标题不正确。在summary.myData中,最后两列" Measure"和"衡量"应该说"加"和"减去"分别
这与我遇到的另一个问题有关,我在这里询问如何正确引用我正在处理的Tk / R GUI中的列。
myData的:
Group Subgroup Measure
1 A 1 0.234213
2 A 1 0.046248
3 A 1 0.391376
4 A 2 0.911849
5 A 2 0.729955
6 A 2 0.991110
7 A 2 0.378422
8 A 3 0.898037
9 A 3 0.258884
10 A 3 NA
11 A 3 0.057631
12 A 3 0.745202
13 A 3 0.121376
14 B 1 0.385198
15 B 1 0.484399
16 B 1 0.115034
17 B 1 0.073629
18 B 1 0.456150
19 B 2 0.336108
20 B 2 0.845458
21 B 2 0.267494
22 B 3 0.536123
23 B 3 1.331731
24 B 3 0.505114
25 B 3 0.843348
26 B 3 0.827932
27 B 3 0.813351
28 C 1 0.095587
29 C 1 0.158822
30 C 1 0.392376
31 C 1 0.284625
32 C 2 0.898819
33 C 2 0.743428
34 C 2 0.298989
35 C 2 0.423961
36 C 3 0.868351
37 C 3 0.181547
38 C 3 1.146131
39 C 3 0.234941
追加脚本:
summary.myData<-summarySE(myData, measurevar=paste(tx.choice1), groupvars=paste(tx.choice2),conf.interval=0.95,na.rm=TRUE,.drop=FALSE)
summary.myData$plus<-summary.myData[3]-summary.myData[6]
summary.myData$minus<-summary.myData[3]+summary.myData[6]
结果:
Group N Measure sd se ci Measure Measure
1 A 12 0.4803586 0.3539277 0.10217014 0.2248750 0.2554836 0.7052335
2 B 14 0.5586478 0.3412835 0.09121184 0.1970512 0.3615966 0.7556990
3 C 12 0.4772981 0.3465511 0.10004069 0.2201881 0.2571100 0.6974862
答案 0 :(得分:1)
您遇到的问题是您已将$plus
和$minus
分配给data.frames,而不是原子矢量。因此,在打印时,R在嵌入的data.frame中显示列名称(在两种情况下均为'Measure'
),而不是列表组件的名称('plus'
和'minus'
)。 / p>
str(summary.myData);
## 'data.frame': 3 obs. of 8 variables:
## $ Group : Factor w/ 3 levels "A","B","C": 1 2 3
## $ N : num 12 14 12
## $ Measure: num 0.48 0.559 0.477
## $ sd : num 0.354 0.341 0.347
## $ se : num 0.1022 0.0912 0.1
## $ ci : num 0.225 0.197 0.22
## $ plus :'data.frame': 3 obs. of 1 variable:
## ..$ Measure: num 0.255 0.362 0.257
## $ minus :'data.frame': 3 obs. of 1 variable:
## ..$ Measure: num 0.705 0.756 0.697
summary.myData;
## Group N Measure sd se ci Measure Measure
## 1 A 12 0.4803586 0.3539277 0.10217014 0.2248750 0.2554836 0.7052335
## 2 B 14 0.5586478 0.3412835 0.09121184 0.1970512 0.3615966 0.7556990
## 3 C 12 0.4772981 0.3465511 0.10004069 0.2201881 0.2571100 0.6974862
用
替换作业summary.myData$plus <- summary.myData[,3]-summary.myData[,6];
summary.myData$minus <- summary.myData[,3]+summary.myData[,6];
然后你得到:
str(summary.myData);
## 'data.frame': 3 obs. of 8 variables:
## $ Group : Factor w/ 3 levels "A","B","C": 1 2 3
## $ N : num 12 14 12
## $ Measure: num 0.48 0.559 0.477
## $ sd : num 0.354 0.341 0.347
## $ se : num 0.1022 0.0912 0.1
## $ ci : num 0.225 0.197 0.22
## $ plus : num 0.255 0.362 0.257
## $ minus : num 0.705 0.756 0.697
summary.myData;
## Group N Measure sd se ci plus minus
## 1 A 12 0.4803586 0.3539277 0.10217014 0.2248750 0.2554836 0.7052335
## 2 B 14 0.5586478 0.3412835 0.09121184 0.1970512 0.3615966 0.7556990
## 3 C 12 0.4772981 0.3465511 0.10004069 0.2201881 0.2571100 0.6974862
这里的关键是不同的索引方式。当您使用1D索引时,您实际上将data.frame视为列表(它在内部),因此索引操作返回指定的列表组件,仍然被归类为data.frame。当您使用2D索引时,您可以单独索引行和列,这样您就可以提取2D&#34;子表格&#34; data.frame。但是,当您只指定一列时,默认行为(drop=T
)用于将列作为原子向量返回,而不是作为单列data.frame返回。您可以使用drop=F
更改此内容。
summary.myData[3];
## Measure
## 1 0.4803586
## 2 0.5586478
## 3 0.4772981
summary.myData[,3];
## [1] 0.4803586 0.5586478 0.4772981
summary.myData[,3,drop=F];
## Measure
## 1 0.4803586
## 2 0.5586478
## 3 0.4772981