问题:我想使用dplyr/tibble添加add_row.我想在我的示例中按A分组数据,然后是包含组名A的add_row,然后是B的值.
我面临的问题是尝试在A下的列中添加Group_by变量A.无论我尝试什么,它总是返回错误或NA作为该列中的值.
可重复的例子:
example <- data.frame(A = sample(letters[1:3],10,replace = TRUE),
B = sample(letters[24:26],10,replace = TRUE),
C = sample(1:3,10,replace = TRUE))
Run Code Online (Sandbox Code Playgroud)示例数据的输出:
A B C
1 c y 2
2 b x 3
3 c y 1
4 b y 1
5 c z 1
6 a x 1
7 b x 1
8 c z 2
9 a y 3
10 c y 1
Run Code Online (Sandbox Code Playgroud)代码我想运行.
answer <- example %>%
mutate(A = as.character(A),
B = as.character(B)) %>%
group_by(A) %>%
do(add_row(.,
B = "ADDED",
C = "ADDED"))
Run Code Online (Sandbox Code Playgroud)输出数据:
A B C
1 a x 1
2 a y 3
3 <NA> ADDED ADDED
4 b x 3
5 b y 1
6 b x 1
7 <NA> ADDED ADDED
8 c y 2
9 c y 1
10 c z 1
11 c z 2
12 c y 1
13 <NA> ADDED ADDED
Run Code Online (Sandbox Code Playgroud)所以在数据的输出中,如果有NA,我希望它说组名(a,b或c)
我试过在那里只放置组变量名称,它不起作用会引发错误.
谢谢!
你可以直接在里面添加它do.
example %>%
mutate_if(is.factor, as.character) %>%
group_by(A) %>%
do(add_row(.,
A = unique(.$A),
B = "ADDED",
C = "ADDED"))
Run Code Online (Sandbox Code Playgroud)
或者tidyr::fill在最后使用.因为它必须ungroup首先填充分组变量.
library(tidyr)
example %>%
mutate_if(is.factor, as.character) %>%
group_by(A) %>%
do(add_row(.,
B = "ADDED",
C = "ADDED")) %>%
ungroup() %>%
fill(A)
# A tibble: 13 x 3
A B C
<chr> <chr> <chr>
1 a z 2
2 a x 1
3 a y 2
4 a ADDED ADDED
5 b y 1
6 b z 1
7 b ADDED ADDED
8 c z 2
9 c y 2
10 c z 2
11 c y 2
12 c z 1
13 c ADDED ADDED
Run Code Online (Sandbox Code Playgroud)