如何解决R:标识符和变量在同一列中时的数据键入
我遇到了以下(风格化的)数据清理问题:
df <- data.frame(first_column = c("country1","variable1","variable2","country2","variable2"),second_column = c(NA,"15","16",NA,"62","63")
)
df
#> first_column second_column
#> 1 country1 <NA>
#> 2 variable1 15
#> 3 variable2 16
#> 4 country2 <NA>
#> 5 variable1 62
#> 6 variable2 63
由reprex package(v0.3.0)于2020-11-02创建
我试图分别使用pivot_longer_spec
和pivot_wider_spec
将其转换为“整齐的”(即长格式或宽格式),但无法解决。这些函数的文档似乎很少,而且我很难找出如何正确指定参数的方法。
有人可以告诉我如何使用这些功能或其他功能来解决此问题吗?
非常感谢。
解决方法
使用Zoo软件包的替代解决方案:
library(zoo)
library(dplyr)
df <- data.frame(first_column = c("country1","variable1","variable2","country2","variable2"),second_column = c(NA,"15","16",NA,"62","63"))
df %>%
dplyr::mutate(COUNTRY = ifelse(is.na(second_column),first_column,NA)) %>%
dplyr::mutate(COUNTRY = zoo::na.locf(COUNTRY)) %>%
dplyr::filter(!is.na(second_column)) %>%
tidyr::pivot_wider(names_from = first_column,values_from = second_column)
# A tibble: 2 x 3
COUNTRY variable1 variable2
<chr> <chr> <chr>
1 country1 15 16
2 country2 62 63
,
可以这样实现:
- “棘手的”部分是将国家/地区标识符放在单独的列中,我使用ifelse来确定第二列中的
NA
值(与@DPH相似),{{1} }在“国家/地区”列上,然后fill
摆脱“县行” - 此后,我们可以简单地
filter
pivot_wider
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。