gpt4 book ai didi

r - 在可变位置整理具有多个部分/标题的数据集

转载 作者:行者123 更新时间:2023-12-04 10:46:41 24 4
gpt4 key购买 nike

上下文

我正在尝试读入并整理一个 excel 文件,其中多个标题/部分位于可变位置。这些 header 的内容需要作为变量添加。输入文件是相对较大的 excel 文件,其格式考虑了(人类)可读性,但仅此而已。

输入:

假设数据集包含多个城市的汽车类型分布(基于汽车使用的燃料)。正如您将看到的,在原始文件中,城市名称用作标题(或分隔符)。我们需要这个 header 作为变量。不幸的是,并未列出所有类型,并且缺少一些值。这是一个虚构的示例集:

 df <- data.frame(
col1= c("Seattle","Diesel","Gasoline","LPG","Electric","Boston","Diesel","Gasoline","Electric"),
col2= c(NA, 80 ,NA,10,10,NA,65,25,10)
)
      col1 col2
1 Seattle NA
2 Diesel 80
3 Gasoline NA
4 LPG 10
5 Electric 10
6 Boston NA
7 Diesel 65
8 Gasoline 25
9 Electric 10

期望的结果:

     city     type value
1 Seattle Diesel 80
2 Seattle Gasoline NA
3 Seattle LPG 10
4 Seattle Electric 10
5 Boston Diesel 65
6 Boston Gasoline 25
7 Boston Electric 10

我的尝试:

我得到的最接近的是使用 dplyr 的 dense_rank()lag() 但这不是一个理想的解决方案。

非常感谢任何输入!

最佳答案

假设您有一个有限的措施列表(柴油、电力等),您可以制作一个列表以进行检查。 col1 的任何不在该组度量中的值都可能是一个城市。提取这些(请注意,它目前是一个因素,所以我使用了 as.character),填写并删除所有标题行。

library(dplyr)

meas <- c("Diesel", "Gasoline", "LPG", "Electric")

df %>%
mutate(city = ifelse(!col1 %in% meas, as.character(col1), NA)) %>%
tidyr::fill(city) %>%
filter(col1 != city)
#> col1 col2 city
#> 1 Diesel 80 Seattle
#> 2 Gasoline NA Seattle
#> 3 LPG 10 Seattle
#> 4 Electric 10 Seattle
#> 5 Diesel 65 Boston
#> 6 Gasoline 25 Boston
#> 7 Electric 10 Boston

关于r - 在可变位置整理具有多个部分/标题的数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59650616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com