【发布时间】:2021-02-11 11:07:25
【问题描述】:
我有一个这样的数据框:
|DOI | WoS| Scopus| Dim| WoS_Year| Scopus_Year| Dim_Year|
|:-----------------------------|---:|------:|---:|--------:|-----------:|--------:|
|10.1515/jag-2017-0010 | NA| 1| 1| NA| 2017| 2017|
|10.1007/978-3-662-55771-6_9 | NA| NA| 1| NA| NA| 2020|
|10.1088/1361-6668/30/2/024004 | 1| 1| NA| 2017| 2017| NA|
|10.3390/ma12010124 | 1| 1| NA| 2019| 2019| NA|
|10.1002/ppsc.201700109 | 1| 1| 1| 2017| 2017| 2017|
我想将其拆分为 3 个数据帧的列表 (list_of_df),其中:
-
WoS:
list_of_df$WoS应该包含所有具有WoS = 1的DOI,以及类似于旧WoS_Year的列Year; -
Scopus:
list_of_df$Scopus应该包含所有具有Scopus= 1的DOI,以及类似于旧Scopus_Year的列Year; -
Dim:
list_of_df$Dim应该包含所有具有Dim= 1的DOI,以及类似于旧Dim_Year的列Year。
(实际上有多个以WoS_* 或Scopus_* 或Dim_* 开头的列,我希望将每一列都保留在新的相应list_of_df 中,但是通过删除诸如WoS_ 等的起始字符串。
例如,starting_with("Scopus_") 的所有列都应在 list_of_df$Scopus 中,但列名中应不包含 Scopus_。)
实现这一目标的最佳方法是什么?
我对@987654346@ 或dplyr::nest(df, WoS:Dim) 的尝试没有结果...
感谢您的帮助!
> dput(df)
structure(list(DOI = c("10.1515/jag-2017-0010", "10.1007/978-3-662-55771-6_9",
"10.1088/1361-6668/30/2/024004", "10.3390/ma12010124", "10.1002/ppsc.201700109"
), WoS = c(NA, NA, 1L, 1L, 1L), Scopus = c(1L, NA, 1L, 1L, 1L
), Dim = c(1L, 1L, NA, NA, 1L), WoS_Year = c(NA, NA, 2017L, 2019L,
2017L), Scopus_Year = c(2017L, NA, 2017L, 2019L, 2017L), Dim_Year = c(2017L,
2020L, NA, NA, 2017L)), row.names = c(2186L, 9505L, 12281L, 11882L,
874L), class = "data.frame")
【问题讨论】:
标签: r dataframe dplyr nested nested-lists