在数据框中rbind行时分配行名

时间:2017-02-01 14:45:32

标签: r rbind

我希望在将行绑定到新数据帧(d)时分配一个rowname(A_B)。 该行是另一个数据帧(df)的两行比率的结果。

    df <- data.frame(ID = c("A", "B" ),replicate(3,sample(1:100,2,rep=TRUE)))
    d <- data.frame()
    d<-rbind(d, df[df$ID == "A",2:4 ]/df[df$ID == "B", 2:4])

实际输出

    X1   X2   X3
1 0.08 0.14 0.66

预期产出。而不是rowname 1我想要A_B作为A_B比率的结果

       X1   X2   X3
A_B 0.08 0.14 0.66

3 个答案:

答案 0 :(得分:1)

更新解决方案以解决多行问题

您可以从以下解决方案中解决所需的行名称....

df <- data.frame(ID = c("A", "B" ),replicate(3, sample(1:100,8,rep=TRUE)))
# This is where you control what you like to see as the row names    
rownames(df) <- make.names( paste("NAME", df[ ,"ID"]) , unique = TRUE)
d <- data.frame()
rbind(d, df[df$ID == "A",2:4 ]/df[df$ID == "B", 2:4], make.row.names = "T")

输出

               X1        X2         X3
NAME.A   0.8690476 1.1851852 2.40909091
NAME.A.1 1.8181818 0.8095238 1.01408451
NAME.A.2 0.8235294 5.4444444 2.50000000
NAME.A.3 1.4821429 1.8139535 0.05617978

答案 1 :(得分:1)

也许这是一个愚蠢的解决方案,但你试过直接给它行名称吗?有人喜欢这样:

rbind(d, your_name = (df[df$ID == "A",2:4 ]/df[df$ID == "B", 2:4]))

对我而言,这是有效的......问候。

答案 2 :(得分:0)

您可以通过将 rbind 输出传递到管道到函数 rownames() 并根据需要更改行名称来分配行名称。

%>% rownames(.) <- c("Name you like")

只要确保你改变了你想要的正确行。