gpt4 book ai didi

r - 基于 2 列的组值

转载 作者:行者123 更新时间:2023-12-04 11:13:32 25 4
gpt4 key购买 nike

这可能是一个非常简单的问题,但是我尝试搜索它但没有找到解决方案。

我有一个包含 65 列和 350 万行的庞大数据集。这个日期如下:

GR SR var1 var2 var3 var4 var5 var6 var6

1 2 "" "" "" "" "" x


1 2 x x x "" "" ""

1 2 "" "" "" "" "" ""

1 3 x x x x "" ""

1 3 "" "" "" "" "" ""

其中 ""= NULL

我想根据其他变量将 var 1 更新为 6。因此,对于每个 GR 和 SR,如果 var1 到 var6 包含一个 x,则需要用一个 x 更新它。这将导致下表:

GR SR var1 var2 var3 var4 var5 var6

1 2 x x x "" "" x

1 2 x x x "" "" x

1 2 x x x "" "" x

1 3 x x x x "" ""

1 3 x x x x "" ""

找到这些记录后,我想删除重复的记录,但我知道如何使用Unique form library(data.table)

有人知道怎么做吗?

最佳答案

这是在 tidyr 中使用 fill() 的解决方案(首先加载 tidyverse):

df %>% group_by(GR, SR) %>%
fill(starts_with("var")) %>%
fill(starts_with("var"), .direction = "up")

# GR SR var1 var2 var3 var4 var5 var6
# <int> <int> <chr> <chr> <chr> <chr> <chr> <chr>
# 1 1 2 x x x NA NA x
# 2 1 2 x x x NA NA x
# 3 1 2 x x x NA NA x
# 4 1 3 x x x x NA NA
# 5 1 3 x x x x NA NA

我假设空元素是 NA。如果它们是字符串 "",那么您需要将它们转换为 NA,否则上面的代码将不起作用。

# How to recode all "" to NA?
# Insert the following code between group_by() and fill()
mutate_all(funs(na_if(., ""))) %>%

# data
df <- structure(list(GR = c(1L, 1L, 1L, 1L, 1L),
SR = c(2L, 2L, 2L, 3L, 3L), var1 = c(NA, "x", NA, "x", NA),
var2 = c(NA, "x", NA, "x", NA), var3 = c(NA, "x", NA, "x", NA),
var4 = c(NA, NA, NA, "x", NA), var5 = c(NA_character_, NA_character_,
NA_character_, NA_character_, NA_character_), var6 = c("x", NA, NA, NA, NA)),
class = "data.frame", row.names = c(NA, -5L))

关于r - 基于 2 列的组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54745888/

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