R 分配第二列,并将其分离到第一列
我的数据结构如下:R 分配第二列,并将其分离到第一列,r,dataframe,R,Dataframe,我的数据结构如下: X1 X2 X3 AA x1;y1 100 BB 200 CC x3;y3;z3 300 DD x4;y4 400 可再现数据 df <- data.frame( X1 = c("AA", "BB", "CC", "DD"), X2 = c("x1;y1&qu
X1 X2 X3
AA x1;y1 100
BB 200
CC x3;y3;z3 300
DD x4;y4 400
可再现数据
df <- data.frame(
X1 = c("AA", "BB", "CC", "DD"),
X2 = c("x1;y1", "", "x3,y3,z3", "x4;y4"),
X3 = c("100", "200", "300", "400")
)
谢谢。粘贴前两列,然后分成行:
library(tidyr)
library(dplyr)
df %>%
transmute(new = paste(X1, X2, sep = ";"), X3) %>%
separate_rows(new, sep = "[;,]")
# # A tibble: 12 x 2
# new X3
# <chr> <fct>
# 1 AA 100
# 2 x1 100
# 3 y1 100
# 4 BB 200
# 5 x2 200
# 6 CC 300
# 7 x3 300
# 8 y3 300
# 9 z3 300
# 10 DD 400
# 11 x4 400
# 12 y4 400
粘贴前两列,然后分成行:
library(tidyr)
library(dplyr)
df %>%
transmute(new = paste(X1, X2, sep = ";"), X3) %>%
separate_rows(new, sep = "[;,]")
# # A tibble: 12 x 2
# new X3
# <chr> <fct>
# 1 AA 100
# 2 x1 100
# 3 y1 100
# 4 BB 200
# 5 x2 200
# 6 CC 300
# 7 x3 300
# 8 y3 300
# 9 z3 300
# 10 DD 400
# 11 x4 400
# 12 y4 400
使用sep=;,粘贴两列;,然后看看这篇文章:用sep=;,粘贴两列;,然后看看这篇文章:当X2列为空时如何防止NA?当X2列为空时如何防止NA?
df %>%
transmute(new = paste(X1, X2, sep = ";"), X3) %>%
separate_rows(new, sep = "[;,]") %>%
filter(new != "")
# # A tibble: 11 x 2
# new X3
# <chr> <fct>
# 1 AA 100
# 2 x1 100
# 3 y1 100
# 4 BB 200
# 5 CC 300
# 6 x3 300
# 7 y3 300
# 8 z3 300
# 9 DD 400
# 10 x4 400
# 11 y4 400