R 取消安装数据帧并用NAs填充新行
假设我有一个嵌套的df,我想取消列的嵌套:R 取消安装数据帧并用NAs填充新行,r,dataframe,tidyr,unnest,R,Dataframe,Tidyr,Unnest,假设我有一个嵌套的df,我想取消列的嵌套: df一种方法是将副本更改为NA df1 <- tidyr::unnest(df, nestdf) cols <- c('x', 'y') df1[duplicated(df1[cols]), cols] <- NA df1 # x y a b # <dbl> <dbl> <int> <int> #1 1 2 1 3
df一种方法是将副本更改为NA
df1 <- tidyr::unnest(df, nestdf)
cols <- c('x', 'y')
df1[duplicated(df1[cols]), cols] <- NA
df1
# x y a b
# <dbl> <dbl> <int> <int>
#1 1 2 1 3
#2 NA NA 2 4
#3 3 4 3 5
#4 NA NA 4 6
#5 NA NA 5 7
重复行,并与嵌套列表列的unnest
绑定:
nr您可以先将x
和y
转换为列表:
library(tidyverse)
df <- tibble::tribble(
~x, ~y, ~nestdf,
1, 2, tibble::tibble(a=1:2, b=3:4),
3, 4, tibble::tibble(a=3:5, b=5:7)
)
df %>%
mutate_at(vars(x:y), ~map2(., nestdf, ~.x[seq(nrow(.y))])) %>%
unnest(everything())
# A tibble: 5 x 4
#x y a b
#<dbl> <dbl> <int> <int>
# 1 1 2 1 3
#2 NA NA 2 4
#3 3 4 3 5
#4 NA NA 4 6
#5 NA NA 5 7
库(tidyverse)
df%
在(vars(x:y),~map2(,nestdf,~.x[seq(nrow(.y))))%%>处突变
unnest(所有内容())
#一个tibble:5x4
#x y a b
#
# 1 1 2 1 3
#2钠2 4
#3 3 4 3 5
#4 NA NA 4 6
#5 NA 5 7
您对可能的非最新答案感兴趣吗?这很好,我已经解决了这个问题,这样在没有任何行的情况下它就可以工作了duplicated@HongOoi-谢谢-我欠你一杯啤酒。哎呀,我把它弄坏了,等等on@HongOoi-我想我已经修好了
library(dplyr)
library(tidyr)
df1 <- df %>% mutate(row = row_number()) %>% unnest(nestdf)
cols <- c('x', 'y', 'row')
df1[duplicated(df1[cols]), cols] <- NA
df1 <- select(df1, -row)
nr <- sapply(df$nestdf, nrow) - 1
cbind(
df[rep(rbind(seq_along(nr), NA), rbind(1, nr)), c("x","y")],
unnest(df["nestdf"], cols=everything())
)
# x y a b
#1 1 2 1 3
#2 NA NA 2 4
#3 3 4 3 5
#4 NA NA 4 6
#5 NA NA 5 7
library(tidyverse)
df <- tibble::tribble(
~x, ~y, ~nestdf,
1, 2, tibble::tibble(a=1:2, b=3:4),
3, 4, tibble::tibble(a=3:5, b=5:7)
)
df %>%
mutate_at(vars(x:y), ~map2(., nestdf, ~.x[seq(nrow(.y))])) %>%
unnest(everything())
# A tibble: 5 x 4
#x y a b
#<dbl> <dbl> <int> <int>
# 1 1 2 1 3
#2 NA NA 2 4
#3 3 4 3 5
#4 NA NA 4 6
#5 NA NA 5 7