R将列附加到数据集错误名称

时间:2015-07-28 19:25:34

标签: r append

编辑:清晰度

当我将新列附加到现有data.frame时,列的标题不正确。在summary.myData中,最后两列" Measure"和"衡量"应该说"加"和"减去"分别

这与我遇到的另一个问题有关,我在这里询问如何正确引用我正在处理的Tk / R GUI中的列。

Parent Question

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

1 个答案:

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