R 如果在两个列表的比较中缺少列表元素,则添加列表元素
我有如下示例数据:R 如果在两个列表的比较中缺少列表元素,则添加列表元素,r,list,for-loop,R,List,For Loop,我有如下示例数据: DT1 <- structure(list(Province = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3), Year = c(2000, 2000, 2000, 2001, 2001, 2001, 2002, 2002, 2002, 2000, 2000, 2000, 2001, 2001, 2001, 2002, 2002, 2002,
DT1 <- structure(list(Province = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3), Year = c(2000,
2000, 2000, 2001, 2001, 2001, 2002, 2002, 2002, 2000, 2000, 2000,
2001, 2001, 2001, 2002, 2002, 2002, 2000, 2000, 2000, 2001, 2001,
2001, 2002, 2002, 2002), Municipality = c("Something", "Anything",
"Nothing", "Something", "Anything", "Nothing", "Something", "Anything",
"Nothing", "Something", "Anything", "Nothing", "Something", "Anything",
"Nothing", "Something", "Anything", "Nothing", "Something", "Anything",
"Nothing", "Something", "Anything", "Nothing", "Something", "Anything",
"Nothing"), Values = c(0.59, 0.58, 0.66, 0.53, 0.94, 0.2, 0.86,
0.85, 0.99, 0.59, 0.58, 0.66, 0.53, 0.94, 0.2, 0.86, 0.85, 0.99,
0.59, 0.58, 0.66, 0.53, 0.94, 0.2, 0.86, 0.85, 0.99)), row.names = c(NA,
-27L), class = c("tbl_df", "tbl", "data.frame"))
DT2 <- structure(list(Province = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3), Year = c(2000,
2000, 2000, 2001, 2001, 2001, 2002, 2002, 2002, 2000, 2000, 2000,
2001, 2001, 2001, 2002, 2002, 2002, 2000, 2000, 2000, 2001, 2001,
2001, 2002, 2002, 2002), Municipality = c("Some", "Anything",
"Nothing", "Someth.", "Anything", "Not", "Something", "Anything",
"None", "Some", "Anything", "Nothing", "Someth.", "Anything",
"Not", "Something", "Anything", "None", "Some", "Anything", "Nothing",
"Someth.", "Anything", "Not", "Something", "Anything", "None"
), `Other Values` = c(0.41, 0.42, 0.34, 0.47, 0.0600000000000001,
0.8, 0.14, 0.15, 0.01, 0.41, 0.42, 0.34, 0.47, 0.0600000000000001,
0.8, 0.14, 0.15, 0.01, 0.41, 0.42, 0.34, 0.47, 0.0600000000000001,
0.8, 0.14, 0.15, 0.01)), row.names = c(NA, -27L), class = c("tbl_df",
"tbl", "data.frame"))
DT2 <- DT2[-c(5:10),]
DT1_list <- DT1%>%
group_split(Province, Year)
DT2_list <- DT2%>%
group_split(Province, Year)
像这样修改较小的DF
library(tidyverse)
DT2_modified <- DT1 %>% select(Province, Year) %>% group_by(Province, Year) %>%
slice_head() %>%
left_join(DT2, by = c("Province", "Year"))
#Now extract your lists
DT2_list_modified <- DT2_modified %>%
group_split(Province, Year)
#Check the code/result
> DT2_list_modified
<list_of<
tbl_df<
Province : double
Year : double
Municipality: character
Other Values: double
>
>[9]>
[[1]]
# A tibble: 3 x 4
Province Year Municipality `Other Values`
<dbl> <dbl> <chr> <dbl>
1 1 2000 Some 0.41
2 1 2000 Anything 0.42
3 1 2000 Nothing 0.34
[[2]]
# A tibble: 1 x 4
Province Year Municipality `Other Values`
<dbl> <dbl> <chr> <dbl>
1 1 2001 Someth. 0.47
[[3]]
# A tibble: 1 x 4
Province Year Municipality `Other Values`
<dbl> <dbl> <chr> <dbl>
1 1 2002 NA NA
[[4]]
# A tibble: 2 x 4
Province Year Municipality `Other Values`
<dbl> <dbl> <chr> <dbl>
1 2 2000 Anything 0.42
2 2 2000 Nothing 0.34
[[5]]
# A tibble: 3 x 4
Province Year Municipality `Other Values`
<dbl> <dbl> <chr> <dbl>
1 2 2001 Someth. 0.47
2 2 2001 Anything 0.06
3 2 2001 Not 0.8
[[6]]
# A tibble: 3 x 4
Province Year Municipality `Other Values`
<dbl> <dbl> <chr> <dbl>
1 2 2002 Something 0.14
2 2 2002 Anything 0.15
3 2 2002 None 0.01
[[7]]
# A tibble: 3 x 4
Province Year Municipality `Other Values`
<dbl> <dbl> <chr> <dbl>
1 3 2000 Some 0.41
2 3 2000 Anything 0.42
3 3 2000 Nothing 0.34
[[8]]
# A tibble: 3 x 4
Province Year Municipality `Other Values`
<dbl> <dbl> <chr> <dbl>
1 3 2001 Someth. 0.47
2 3 2001 Anything 0.06
3 3 2001 Not 0.8
[[9]]
# A tibble: 3 x 4
Province Year Municipality `Other Values`
<dbl> <dbl> <chr> <dbl>
1 3 2002 Something 0.14
2 3 2002 Anything 0.15
3 3 2002 None 0.01
库(tidyverse)
DT2\u已修改%select(省,年)%%>%group\u by(省,年)%%
切片头()%>%
左联合(DT2,by=c(“省”、“年”))
#现在提取您的列表
DT2\u列表\u已修改%
分组(省,年)
#检查代码/结果
>DT2\u列表\u已修改
>[9]>
[[1]]
#一个tibble:3x4
省/自治区/其他值`
1 2000约0.41
2 1 2000 0.42
3 1 2000无0.34
[[2]]
#一个tibble:1 x 4
省/自治区/其他值`
2001年左右。0.47
[[3]]
#一个tibble:1 x 4
省/自治区/其他值`
1 2002年不适用
[[4]]
#一个tibble:2x4
省/自治区/其他值`
1.22000.42
2 2000无0.34
[[5]]
#一个tibble:3x4
省/自治区/其他值`
1 2 2001年某时。0.47
2.2.0.06
3.2 2001不是0.8
[[6]]
#一个tibble:3x4
省/自治区/其他值`
1.2.0.14
2 0.15
3.2 2002无0.01
[[7]]
#一个tibble:3x4
省/自治区/其他值`
1.3 2000约0.41
2 3 2000 0.42
3 2000无0.34
[[8]]
#一个tibble:3x4
省/自治区/其他值`
1 3 2001年某时。0.47
2.3.0.06
3 2001年不是0.8
[[9]]
#一个tibble:3x4
省/自治区/其他值`
1.3.0.14
2.3.0.15
3 2002年无0.01
我认为这将达到目的是否要将列表中的其他值置为空白?是的,除省、年外,所有内容都应为空白。请参阅基于
tidyverse
方法而不是使用循环提出的解决方案。非常感谢!我现在正在检查我的实际数据。
library(tidyverse)
DT2_modified <- DT1 %>% select(Province, Year) %>% group_by(Province, Year) %>%
slice_head() %>%
left_join(DT2, by = c("Province", "Year"))
#Now extract your lists
DT2_list_modified <- DT2_modified %>%
group_split(Province, Year)
#Check the code/result
> DT2_list_modified
<list_of<
tbl_df<
Province : double
Year : double
Municipality: character
Other Values: double
>
>[9]>
[[1]]
# A tibble: 3 x 4
Province Year Municipality `Other Values`
<dbl> <dbl> <chr> <dbl>
1 1 2000 Some 0.41
2 1 2000 Anything 0.42
3 1 2000 Nothing 0.34
[[2]]
# A tibble: 1 x 4
Province Year Municipality `Other Values`
<dbl> <dbl> <chr> <dbl>
1 1 2001 Someth. 0.47
[[3]]
# A tibble: 1 x 4
Province Year Municipality `Other Values`
<dbl> <dbl> <chr> <dbl>
1 1 2002 NA NA
[[4]]
# A tibble: 2 x 4
Province Year Municipality `Other Values`
<dbl> <dbl> <chr> <dbl>
1 2 2000 Anything 0.42
2 2 2000 Nothing 0.34
[[5]]
# A tibble: 3 x 4
Province Year Municipality `Other Values`
<dbl> <dbl> <chr> <dbl>
1 2 2001 Someth. 0.47
2 2 2001 Anything 0.06
3 2 2001 Not 0.8
[[6]]
# A tibble: 3 x 4
Province Year Municipality `Other Values`
<dbl> <dbl> <chr> <dbl>
1 2 2002 Something 0.14
2 2 2002 Anything 0.15
3 2 2002 None 0.01
[[7]]
# A tibble: 3 x 4
Province Year Municipality `Other Values`
<dbl> <dbl> <chr> <dbl>
1 3 2000 Some 0.41
2 3 2000 Anything 0.42
3 3 2000 Nothing 0.34
[[8]]
# A tibble: 3 x 4
Province Year Municipality `Other Values`
<dbl> <dbl> <chr> <dbl>
1 3 2001 Someth. 0.47
2 3 2001 Anything 0.06
3 3 2001 Not 0.8
[[9]]
# A tibble: 3 x 4
Province Year Municipality `Other Values`
<dbl> <dbl> <chr> <dbl>
1 3 2002 Something 0.14
2 3 2002 Anything 0.15
3 3 2002 None 0.01