【问题标题】:generate a vector in R and insert it in a stacked frame在 R 中生成一个向量并将其插入到堆叠的框架中
【发布时间】:2011-08-16 20:20:55
【问题描述】:


我想堆叠一个框架,但我认为我没有使用正确的方式......

myframe
 sex = F

     q8
cars   N   U   Y
       1  35  31  10
       2  34  23   7
       3 132 109  35
       4  38  36  14
       5   7   5   2

, , sex = M

     q8
cars   N   U   Y
       1  49  22  16
       2  24  13   8
       3 136  52  33
       4  37  31  32
       5  15  10   4

f = c(myframe[1:15])
m = c(myframe[16:30])

S <- stack(data.frame(f,m))


names(S)=c("num","gender")
group=c("1","1","1","2","2","2","3","3","3","4","4","4","5","5","5","6","6","6","1","1","1","2","2","2","3","3","3","4","4","4","5","5","5")

num=S$num
gender=S$gender
twoway.df=data.frame(num,group,gender)
twoway.df
1   1 35 f
2   1 31 f
3   1 10 f
4   2 24 f
5   2 13 f
      ....

你能帮我做得更好吗?

【问题讨论】:

  • 这里不是很清楚你的意思。您可能想要编辑您的帖子。我相信您有一个包含两列的数据框,每个性别各一列,并且您希望它变成一个数据框,其中一列包含所有数据,另一列包含性别?如果是这样,您可以检查 ?reshape
  • 我相信 group=c("1","1","1","2","2","2","3","3","3" ,"4","4","4","5","5","5","6","6","6","1","1","1"," 2","2","2","3","3","3","4","4","4","5","5","5") 不是正确的做法?
  • 是否有更多的压缩表达式?我无法编辑我的帖子。我按回车,但它不工作:(
  • @user494766 请使用dput(myframe) 提供可重现的数据集。
  • @user494766 你必须点击编辑页面底部的保存编辑按钮。

标签: r frame


【解决方案1】:

要将表格转换为 data.frame,基本函数 as.data.frame.table 应该可以工作。

但是,我会这样做:

myframe <- as.table(array(c(35, 34, 132, 38, 7, 31, 23, 109, 36, 5, 
                            10, 7, 35, 14, 2, 49, 24, 136, 37, 15, 
                            22, 13, 52, 31, 10, 16, 8, 33, 32, 4), 
                            dim=c(5, 3, 2), 
                            dimnames=list(cars=1:5, q8=c("N","U","Y"), 
                                          sex=c("F","M"))))
library(reshape)
melt(myframe)

用于获取包含所有变量的 data.frame。如果您只想在 data.frame 中保留 q8sex 作为因子,请改用 melt(myframe)[,-1]

更多信息请参见help(melt.array)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 2012-11-15
    • 2016-02-24
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    相关资源
    最近更新 更多