如何在 R 中追加列?

How to append the column in R?

考虑以下名为 mydata 的数据。我的意图是通过添加标识符变量 v4.

v1v2 放在同一列中
id v1 v2 
1  2  3
2  4  5
3  7  8

OUTPUT 要求:

id v3 v4 
1  2  1
2  4  1
3  7  1
1  3  2
2  5  2
3  8  2

非常感谢任何帮助!

这个怎么样:

mydata <- data.frame(c(1,2,3),c(2,4,7),c(3,5,8))
colnames(mydata) <- c("id","v1","v2")



mydata_2 <- rbind(mydata[,c(1,2)], setNames(mydata[,c(1,3)], names(mydata[,c(1,2)])))
mydata_2$v4 <- c(rep(1,length(mydata$v1)),rep(2,length(mydata$v2)))
colnames(mydata_2) <- c("id","v3","v4")

一个data.table选项

setcolorder(
  transform(
    setnames(melt(setDT(df), id.var = "id", variable.name = "v4"), "value", "v3"),
    v4 = as.numeric(factor(v4))
  ), c("id", "v3", "v4")
)[]

给予

   id v3 v4
1:  1  2  1
2:  2  4  1
3:  3  7  1
4:  1  3  2
5:  2  5  2
6:  3  8  2

我认为您正在寻找用于添加列的 dplyr::mutate(),以及用于将两个数据框堆叠在一起的 rbind()

library(dplyr)    
mydata <- data.frame (id  = c(1,2,3),
                      v1 = c(2,4,7),
                      v2 = c(3,5,8))
)

a<- data.frame(mydata$id, mydata$v1)%>%
  mutate(v4=1)%>%
  rename(v3=mydata.v1, id=mydata.id )

b<- data.frame(mydata$id, mydata$v2)%>%
  mutate(v4=2)%>%
      rename(v3=mydata.v2, id=mydata.id )
    
> rbind(a,b)
  id v3 v4
1  1  2  1
2  2  4  1
3  3  7  1
4  1  3  2
5  2  5  2
6  3  8  2