R 数据清理-在列之间移动数据
在下面的dataframe示例中,我正在寻找一种方法,在v9列包含“a”时,从第v2列开始向右移动值,同时用零替换间隙R 数据清理-在列之间移动数据,r,dplyr,R,Dplyr,在下面的dataframe示例中,我正在寻找一种方法,在v9列包含“a”时,从第v2列开始向右移动值,同时用零替换间隙 set.seed(0) df <- matrix(sample(c("a", 1:3), 100, replace = TRUE), nrow=10) colnames(df) <- c(paste0("v", 1:10)) df <- as_tibble(df) df$v11 <- 0 # A tibble: 10 x 11 v1
set.seed(0)
df <- matrix(sample(c("a", 1:3), 100, replace = TRUE), nrow=10)
colnames(df) <- c(paste0("v", 1:10))
df <- as_tibble(df)
df$v11 <- 0
# A tibble: 10 x 11
v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11
<chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <dbl>
1 3 a 3 1 1 2 1 3 3 a 0
2 1 a 3 1 3 1 3 1 1 a 0
3 1 a a 2 2 3 1 3 2 a 0
4 2 2 2 1 3 1 1 1 1 2 0
5 3 1 a a 2 a 1 1 1 3 0
6 a 3 1 3 2 a 2 1 3 3 0
7 3 1 1 2 3 a 1 3 a 3 0
8 3 2 a 3 a 1 1 3 2 1 0
9 2 3 1 a 1 2 3 1 a 1 0
10 2 1 3 2 2 2 a 3 a 3 0
req_rows <- which(df$v9 == "a")
req_rows
[1] 7 9 10
首先,获取
v9
列包含“a”的所有行
set.seed(0)
df <- matrix(sample(c("a", 1:3), 100, replace = TRUE), nrow=10)
colnames(df) <- c(paste0("v", 1:10))
df <- as_tibble(df)
df$v11 <- 0
# A tibble: 10 x 11
v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11
<chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <dbl>
1 3 a 3 1 1 2 1 3 3 a 0
2 1 a 3 1 3 1 3 1 1 a 0
3 1 a a 2 2 3 1 3 2 a 0
4 2 2 2 1 3 1 1 1 1 2 0
5 3 1 a a 2 a 1 1 1 3 0
6 a 3 1 3 2 a 2 1 3 3 0
7 3 1 1 2 3 a 1 3 a 3 0
8 3 2 a 3 a 1 1 3 2 1 0
9 2 3 1 a 1 2 3 1 a 1 0
10 2 1 3 2 2 2 a 3 a 3 0
req_rows <- which(df$v9 == "a")
req_rows
[1] 7 9 10
req\u行首先,获取v9
列包含“a”的所有行
set.seed(0)
df <- matrix(sample(c("a", 1:3), 100, replace = TRUE), nrow=10)
colnames(df) <- c(paste0("v", 1:10))
df <- as_tibble(df)
df$v11 <- 0
# A tibble: 10 x 11
v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11
<chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <dbl>
1 3 a 3 1 1 2 1 3 3 a 0
2 1 a 3 1 3 1 3 1 1 a 0
3 1 a a 2 2 3 1 3 2 a 0
4 2 2 2 1 3 1 1 1 1 2 0
5 3 1 a a 2 a 1 1 1 3 0
6 a 3 1 3 2 a 2 1 3 3 0
7 3 1 1 2 3 a 1 3 a 3 0
8 3 2 a 3 a 1 1 3 2 1 0
9 2 3 1 a 1 2 3 1 a 1 0
10 2 1 3 2 2 2 a 3 a 3 0
req_rows <- which(df$v9 == "a")
req_rows
[1] 7 9 10
req_行df[df$v9=='a',粘贴('v',2:11,sep=”“)]%
选择(v2:v11)%>%
过滤器(v9=='a')%>%
t()%>%
滞后(默认值为0)%>%
t()%>%
作为_tible()
df[df$v9=='a',粘贴('v',2:11,sep=”“)]%
选择(v2:v11)%>%
过滤器(v9=='a')%>%
t()%>%
滞后(默认值为0)%>%
t()%>%
作为_tible()
df[df$v9=='a',paste('v',2:11,sep = "")] <-
df%>%
select(v2:v11)%>%
filter(v9=='a')%>%
t()%>%
lag(default = 0)%>%
t()%>%
as_tibble()