如何在 R 中追加列?
How to append the column in R?
考虑以下名为 mydata
的数据。我的意图是通过添加标识符变量 v4
.
将 v1
和 v2
放在同一列中
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
考虑以下名为 mydata
的数据。我的意图是通过添加标识符变量 v4
.
v1
和 v2
放在同一列中
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