【问题标题】:Renaming rows and columns in R重命名R中的行和列
【发布时间】:2010-12-01 21:03:38
【问题描述】:

我正在运行以下脚本:

cause = c(1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2); 
time =  c(1, 1, 2, 3, 3, 2, 2, 1, 1, 2, 2); 
table(cause, time)

我得到以下信息:

    time
cause 1 2 3
    1 2 2 2
    2 2 3 0

我想要的是这个:

      time
cause     1 2 3
Maltreat  2 2 2
Non-Maltr 2 3 0

所以,我的问题是:如何在 R 中重命名表的行?

同样,您将如何重命名该表的列?

【问题讨论】:

    标签: r rename rows


    【解决方案1】:

    有两种简单的方法可以做到这一点:

    z <- table(cause, time)
    

    使用 colnames/rownames 函数:

    > colnames(z)
    [1] "1" "2" "3"
    > rownames(z)
    [1] "1" "2"
    

    或者使用暗名:

    > dimnames(z)
    $cause
    [1] "1" "2"
    $time
    [1] "1" "2" "3"
    > dimnames(z)$cause
    [1] "1" "2"
    

    无论如何,选择你的名字作为向量并分配它们:

    > dimnames(z)$cause <- c("Maltreat","Non-malt")
    > z
              time
    cause      1 2 3
      Maltreat 2 2 2
      Non-malt 2 3 0
    

    【讨论】:

      【解决方案2】:

      一种方法是使用因子或字符串列表而不是索引。所以:

      cause1 <- c("Maltreat", "Non-malt")[cause]
      
      > print(cause1)
       [1] "Maltreat" "Maltreat" "Maltreat" "Maltreat" "Maltreat" "Non-malt"
       [7] "Maltreat" "Non-malt" "Non-malt" "Non-malt" "Non-malt"
      
      > table(cause1, time)
                time
      cause1     1 2 3
        Maltreat 2 2 2
        Non-malt 2 3 0
      

      而且,如果您担心内存或速度,R 非常擅长在内部有效地表示这类事情,只存储整个字符串的一个实例,其余的通过索引完成。

      顺便说一句,从长远来看,您会更高兴使用数据框:

      > df <- data.frame(cause=as.factor(c("Maltreat", "Non-malt")[cause]), time=time)
      > summary(df)
            cause        time      
       Maltreat:6   Min.   :1.000  
       Non-malt:5   1st Qu.:1.000  
                    Median :2.000  
                    Mean   :1.818  
                    3rd Qu.:2.000  
                    Max.   :3.000  
      > table(df)
                time
      cause      1 2 3
        Maltreat 2 2 2
        Non-malt 2 3 0
      

      【讨论】:

        【解决方案3】:

        不要忘记 plyr 美妙的“重估”和“重命名”命令!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-21
          • 1970-01-01
          • 1970-01-01
          • 2022-08-08
          • 1970-01-01
          相关资源
          最近更新 更多