gpt4 book ai didi

R 根据一个数据集中的列信息/条件将行值替换为其他行?

转载 作者:行者123 更新时间:2023-12-03 20:10:26 25 4
gpt4 key购买 nike

我收到了一个平面数据,并且在平面化数据时缺少值。
我必须根据 id、type 和 Date 以小时为单位将小时数增加到 NAs,以便以美元为单位删除 NAs

id<-c(1,2,1,1,1,2,1)
dollar<-as.numeric(c(100,200,300,500, NA, NA,NA))
hours<-as.numeric(c(NA,NA, NA, NA, 5,10,12))
type<-c("Engineer", "Engineer","Operating","Part", "Engineer","Engineer","Operating" )
Date<-c("2020-01-02","2020-01-03","2020-01-02","2020-01-04", "2020-01-02","2020-01-03","2020-01-02")

id dollar hours type Date
1 1 100 <NA> Engineer 2020-01-02
2 2 200 <NA> Engineer 2020-01-03
3 1 300 <NA> Operating 2020-01-02
4 1 500 <NA> Part 2020-01-04
5 1 <NA> 5 Engineer 2020-01-02
6 2 <NA> 10 Engineer 2020-01-03
7 1 <NA> 12 Operating 2020-01-02

我想按如下方式改革我的数据。
  id dollar hours      type       Date
1 1 100 5 Engineer 2020-01-02
2 2 200 10 Engineer 2020-01-03
3 1 300 12 Operating 2020-01-02
4 1 500 <NA> Part 2020-01-04

它不只是按 id 分组,而是与类型和日期匹配。
'id' 有类别,'type' 有 17 个类别,'Date' 是 3 年。

请帮我解决这个问题。

最佳答案

这是一个 dplyr选项使用 summarise

library(dplyr)
df %>%
group_by(id, type, Date) %>%
summarise_at(vars(dollar, hours), ~mean(.x, na.rm = T))
## A tibble: 4 x 5
## Groups: id, type [4]
# id type Date dollar hours
# <dbl> <fct> <fct> <dbl> <dbl>
#1 1 Engineer 2020-01-02 100 5
#2 1 Operating 2020-01-02 300 12
#3 1 Part 2020-01-04 500 NaN
#4 2 Engineer 2020-01-03 200 10

甚至

df %>% group_by(id, type, Date) %>% summarise_all(~mean(.x, na.rm = T))

样本数据

df <- data.frame(id, dollar, hours, type, Date)

关于R 根据一个数据集中的列信息/条件将行值替换为其他行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60386373/

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