【问题标题】:generating a factor column生成因子列
【发布时间】:2022-01-07 05:58:25
【问题描述】:

我正在模拟一个包含订单历史记录的数据集。我想添加一个具有以下值之一的天气列:晴天、雨天、雪天。

这就是数据集的样子

> dput(data[1:10,-7])
structure(list(order_num = c(501073L, 969942L, 1091101L, 590143L, 
390404L, 219429L, 1025827L, 689629L, 694348L, 435848L), date = structure(c(1542344400, 
1552194000, 1550379600, 1534568400, 1523336400, 1563426000, 1595826000, 
1552712400, 1534309200, 1547960400), class = c("POSIXct", "POSIXt"
), tzone = ""), total_sale = c(36.3853391310075, 35.9405038506853, 
55.6254974332793, 47.7214780063544, 61.4086594373677, 32.8631076291332, 
33.3640439679803, 40.8944394660076, 54.9455495252506, 48.12597580998
), season = c("Spring", "Winter", "Winter", "Fall", "Fall", "Spring", 
"Summer", "Summer", "Fall", "Fall"), temp = c(53, 29, 38, 47, 
57, 60, 80, 88, 51, 51), weather = c(NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_, NA_character_)), row.names = c(NA, 
10L), class = "data.frame")

我打算做这样的事情:

skies1 <- c("Clear", "Rain", "Snow")
skies2 <- c("Clear", "Rain")

data <- data %>%
   mutate(weather = ifelse(season == "Winter", *generate random string from skies1*, *generate random string from skies2*))

但不确定哪种方法可以填充整个天气栏

【问题讨论】:

    标签: r dataframe dplyr


    【解决方案1】:

    最简单的解决方案是使用sample:

    data %>%
        rowwise() %>% 
        mutate(weather = ifelse(season == "Winter", sample(skies1, 1), sample(skies2, 1)))
    
    # A tibble: 10 × 6
    # Rowwise: 
       order_num date                total_sale season  temp weather
           <int> <dttm>                   <dbl> <chr>  <dbl> <chr>  
     1    501073 2018-11-16 05:00:00       36.4 Spring    53 Rain   
     2    969942 2019-03-10 05:00:00       35.9 Winter    29 Rain   
     3   1091101 2019-02-17 05:00:00       55.6 Winter    38 Snow   
     4    590143 2018-08-18 06:00:00       47.7 Fall      47 Rain   
     5    390404 2018-04-10 06:00:00       61.4 Fall      57 Clear  
     6    219429 2019-07-18 06:00:00       32.9 Spring    60 Rain   
     7   1025827 2020-07-27 06:00:00       33.4 Summer    80 Rain   
     8    689629 2019-03-16 05:00:00       40.9 Summer    88 Clear  
     9    694348 2018-08-15 06:00:00       54.9 Fall      51 Clear  
    10    435848 2019-01-20 05:00:00       48.1 Fall      51 Rain   
    

    【讨论】:

      猜你喜欢
      • 2019-02-18
      • 2019-04-04
      • 2018-03-28
      • 2017-08-02
      • 2019-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-26
      相关资源
      最近更新 更多