【问题标题】:Missing values in the dataset after using pivot function?使用数据透视函数后数据集中缺少值?
【发布时间】:2020-09-11 17:14:16
【问题描述】:

我无法解释为什么,但是当我尝试 pivot_wider 数据集时,除第一个国家之外的每个国家都突然失去所有值。

corona_data <- read_csv("https://raw.githubusercontent.com/datasets/covid-19/master/data/time-series-19-covid-combined.csv")
glimpse(corona_data)

corona_data_tidy1 <- corona_data %>% 
  pivot_longer(-c(`Country/Region`, Date, Lat, Long, `Province/State`), names_to = "Name", values_to = "values") 

corona_data_tidy1

corona_data_tidy2 <- corona_data_tidy1 %>% 
  
  mutate(row = row_number()) %>%
pivot_wider(names_from = `Country/Region`, values_from = values) %>%
  select(-row)

corona_data_tidy2

【问题讨论】:

    标签: r pivot na


    【解决方案1】:

    您的代码中有两个错误。

    首先,read_csv 返回一些警告。 Province/State 读作logical 而不是character。那是因为缺少前 1000 行。所以你应该告诉read_csv如何正确读取你的数据。

    与您的问题相关的问题是,一行不是由Country/Region 定义的,而是由Country/RegionProvince/State 定义的。 Country/RegionProvince/State 对每对夫妇的纬度和经度也是唯一标识。

    因此,如果您想保留这些信息,则需要在数据透视表中使用它们。

    看看这个工作示例:

    library(readr)
    library(tidyr)
    library(dplyr)
    
    corona_data <- readr::read_csv("https://raw.githubusercontent.com/datasets/covid-19/master/data/time-series-19-covid-combined.csv",
                                   col_types = cols(
                                    Date = col_date(format = ""),
                                    `Country/Region` = col_character(),
                                    `Province/State` = col_character(),
                                    Lat = col_double(),
                                    Long = col_double(),
                                    Confirmed = col_double(),
                                    Recovered = col_double(),
                                    Deaths = col_double()))
    glimpse(corona_data)
    
    corona_data_tidy1 <- corona_data %>% 
     pivot_longer(c(Confirmed, Recovered, Deaths), names_to = "Name", values_to = "values") 
    
    corona_data_tidy2 <- corona_data_tidy1 %>% 
     pivot_wider(names_from = c(`Country/Region`, `Province/State`, Lat, Long), values_from = values)
    

    【讨论】:

    • 我想这取决于您需要对您的分析做什么......但是,我相信corona_data_tidy1 可能是数据分析的最佳数据集。 corona_data_tidy2 太乱了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 2021-10-25
    • 1970-01-01
    相关资源
    最近更新 更多