使用 tidyR split/recover 表示数组的折叠字符串?
Use tidyR to split/recover a collapsed string representing array?
我有这样的数据:
fakedata<-data.frame(
experiment=c(1,2),
reading1 = c("[1,2,3]","[4,5,6]"),
reading2 = c("[a,b,c]","[d,e,f]")
)
即:
experiment reading1 reading2
1 1 [1,2,3] [a,b,c]
2 2 [5,6,3] [d,e,f]
我想整理如下:
experiment observation reading1 reading2
1 1 1 1 a
2 1 2 2 b
3 1 3 3 c
4 2 1 4 d
5 2 2 5 e
6 2 3 6 f
但是我似乎无法直接通过 R 来完成。有没有办法使用 tidyverse 工具包来做到这一点?
我们可以使用 separate_rows
library(tidyverse)
separate_rows(fakedata, reading1, reading2) %>%
filter(reading1 != '') %>%
group_by(experiment) %>%
mutate(observation = row_number()) %>%
select(experiment, observation, reading1, reading2)
# A tibble: 6 x 4
# Groups: experiment [2]
# experiment observation reading1 reading2
# <dbl> <int> <chr> <chr>
#1 1 1 1 a
#2 1 2 2 b
#3 1 3 3 c
#4 2 1 4 d
#5 2 2 5 e
#6 2 3 6 f
我有这样的数据:
fakedata<-data.frame(
experiment=c(1,2),
reading1 = c("[1,2,3]","[4,5,6]"),
reading2 = c("[a,b,c]","[d,e,f]")
)
即:
experiment reading1 reading2
1 1 [1,2,3] [a,b,c]
2 2 [5,6,3] [d,e,f]
我想整理如下:
experiment observation reading1 reading2
1 1 1 1 a
2 1 2 2 b
3 1 3 3 c
4 2 1 4 d
5 2 2 5 e
6 2 3 6 f
但是我似乎无法直接通过 R 来完成。有没有办法使用 tidyverse 工具包来做到这一点?
我们可以使用 separate_rows
library(tidyverse)
separate_rows(fakedata, reading1, reading2) %>%
filter(reading1 != '') %>%
group_by(experiment) %>%
mutate(observation = row_number()) %>%
select(experiment, observation, reading1, reading2)
# A tibble: 6 x 4
# Groups: experiment [2]
# experiment observation reading1 reading2
# <dbl> <int> <chr> <chr>
#1 1 1 1 a
#2 1 2 2 b
#3 1 3 3 c
#4 2 1 4 d
#5 2 2 5 e
#6 2 3 6 f