将dataframe的列与所有变量组合合并
我尝试了以下命令,但没有显示出预期的任何更改将dataframe的列与所有变量组合合并,r,dataframe,R,Dataframe,我尝试了以下命令,但没有显示出预期的任何更改 "w" "n" "1" 2 1 "2" 3 1 "3" 4 1 "4" 2 1 "5" 5 1 "6" 6 1 "7" 3 2 "8" 7 2 数据 w n 2 1 2 2 3 1 3 2 4 1 4 2 5 1 5 2 6 1 6 2 7 1 7 2 w1我们可以从tidyr使用complete w1 <- s
"w" "n"
"1" 2 1
"2" 3 1
"3" 4 1
"4" 2 1
"5" 5 1
"6" 6 1
"7" 3 2
"8" 7 2
数据
w n
2 1
2 2
3 1
3 2
4 1
4 2
5 1
5 2
6 1
6 2
7 1
7 2
w1我们可以从tidyr
使用complete
w1 <- structure(list(w = c(2L, 3L, 3L, 4L, 5L, 6L, 7L), n = c(1L, 1L,
2L, 1L, 1L, 1L, 2L)), .Names = c("w", "n"), row.names = c(NA,
-7L), class = c("grouped_df", "tbl_df", "tbl", "data.frame"), groups = structure(list(
w = c(2L, 3L, 3L, 4L, 5L, 6L, 7L), n = c(1L, 1L, 2L, 1L,
1L, 1L, 2L), .rows = list(1L, 2L, 3L, 4L, 5L, 6L, 7L)), .Names = c("w",
"n", ".rows"), row.names = c(NA, -7L), class = c("tbl_df", "tbl",
"data.frame"), .drop = TRUE))
库(dplyr)
图书馆(tidyr)
dat2%
不同(w,.keep_all=TRUE)%>%
完整(w,n)
dat2
##tibble:12 x 2
#w n
#
# 1 2 1
# 2 2 2
# 3 3 1
# 4 3 2
# 5 4 1
# 6 4 2
# 7 5 1
# 8 5 2
# 9 6 1
# 10 6 2
# 11 7 1
# 12 7 2
数据
library(dplyr)
library(tidyr)
dat2 <- dat %>%
distinct(w, .keep_all = TRUE) %>%
complete(w, n)
dat2
# # A tibble: 12 x 2
# w n
# <int> <int>
# 1 2 1
# 2 2 2
# 3 3 1
# 4 3 2
# 5 4 1
# 6 4 2
# 7 5 1
# 8 5 2
# 9 6 1
# 10 6 2
# 11 7 1
# 12 7 2
dat我们可以从tidyr
使用complete
w1 <- structure(list(w = c(2L, 3L, 3L, 4L, 5L, 6L, 7L), n = c(1L, 1L,
2L, 1L, 1L, 1L, 2L)), .Names = c("w", "n"), row.names = c(NA,
-7L), class = c("grouped_df", "tbl_df", "tbl", "data.frame"), groups = structure(list(
w = c(2L, 3L, 3L, 4L, 5L, 6L, 7L), n = c(1L, 1L, 2L, 1L,
1L, 1L, 2L), .rows = list(1L, 2L, 3L, 4L, 5L, 6L, 7L)), .Names = c("w",
"n", ".rows"), row.names = c(NA, -7L), class = c("tbl_df", "tbl",
"data.frame"), .drop = TRUE))
库(dplyr)
图书馆(tidyr)
dat2%
不同(w,.keep_all=TRUE)%>%
完整(w,n)
dat2
##tibble:12 x 2
#w n
#
# 1 2 1
# 2 2 2
# 3 3 1
# 4 3 2
# 5 4 1
# 6 4 2
# 7 5 1
# 8 5 2
# 9 6 1
# 10 6 2
# 11 7 1
# 12 7 2
数据
library(dplyr)
library(tidyr)
dat2 <- dat %>%
distinct(w, .keep_all = TRUE) %>%
complete(w, n)
dat2
# # A tibble: 12 x 2
# w n
# <int> <int>
# 1 2 1
# 2 2 2
# 3 3 1
# 4 3 2
# 5 4 1
# 6 4 2
# 7 5 1
# 8 5 2
# 9 6 1
# 10 6 2
# 11 7 1
# 12 7 2
dat问题在分组的数据框中,请考虑:
dat <- read.table(text = "w n
2 1
3 1
4 1
2 1
5 1
6 1
3 2
7 2",
header = TRUE)
输出:
w1 %>%
ungroup() %>%
expand(w, n)
data.frame(w = rep(unique(df$w),
each = uniqueN(df$n)),
n = rep(unique(df$n),
times = uniqueN(df$w)))
#一个tible:12 x 2
w n
1 2 1
2 2 2
3 3 1
4 3 2
5 4 1
6 4 2
7 5 1
8 5 2
9 6 1
10 6 2
11 7 1
12 7 2
问题出在分组的数据框中,请考虑:
dat <- read.table(text = "w n
2 1
3 1
4 1
2 1
5 1
6 1
3 2
7 2",
header = TRUE)
输出:
w1 %>%
ungroup() %>%
expand(w, n)
data.frame(w = rep(unique(df$w),
each = uniqueN(df$n)),
n = rep(unique(df$n),
times = uniqueN(df$w)))
#一个tible:12 x 2
w n
1 2 1
2 2 2
3 3 1
4 3 2
5 4 1
6 4 2
7 5 1
8 5 2
9 6 1
10 6 2
11 7 1
12 7 2
使用原始数据框df
可以创建一个新的数据框,为n
的每个唯一值复制w
:
# A tibble: 12 x 2
w n
<int> <int>
1 2 1
2 2 2
3 3 1
4 3 2
5 4 1
6 4 2
7 5 1
8 5 2
9 6 1
10 6 2
11 7 1
12 7 2
输出:
w1 %>%
ungroup() %>%
expand(w, n)
data.frame(w = rep(unique(df$w),
each = uniqueN(df$n)),
n = rep(unique(df$n),
times = uniqueN(df$w)))
使用原始数据框df
,您可以创建一个新的数据框,为n
的每个唯一值复制w
:
# A tibble: 12 x 2
w n
<int> <int>
1 2 1
2 2 2
3 3 1
4 3 2
5 4 1
6 4 2
7 5 1
8 5 2
9 6 1
10 6 2
11 7 1
12 7 2
输出:
w1 %>%
ungroup() %>%
expand(w, n)
data.frame(w = rep(unique(df$w),
each = uniqueN(df$n)),
n = rep(unique(df$n),
times = uniqueN(df$w)))
你能在问题的结尾分享dput(w1)
的输出吗?结构(列表(w=c(2L,3L,3L,4L,5L,6L,7L),n=c(1L,1L,2L,1L,1L,1L,1L,1L,2L),行名=c(NA,-7L),类=c(“分组的_-df”,“tbl”,“tbl”,“data.frame”),组=结构(列表(w=c(2L,3L,3L,4L,5L,6L,7L),n=c(1L,1L,2L,1L,1L,1L,1L,1L,2L),.rows=list(1L,2L,3L,4L,5L,6L,7L),row.names=c(NA,-7L),class=c(“tbl_-df”,“tbl”,“data.frame”),.drop=TRUE))交叉(w1$w,w1$n)
@PawełChabros这奏效了!谢谢!基本R中的一个选项:expand.grid(lappy(lappy(w1,unique))
您可以共享dput的输出吗
(1L,2L,3L,4L,5L,6L,7L)),row.names=c(NA,-7L),class=c(“tbl_-df”,“tbl”,“data.frame”),.drop=TRUE))交叉(w1$w,w1$n)
@PawełChabros这很有效!谢谢!基本R中的一个选项:扩展.grid(lappy(w1,unique))