将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))