gpt4 book ai didi

r - 填充数据帧中的顺序值

转载 作者:行者123 更新时间:2023-12-04 23:37:58 25 4
gpt4 key购买 nike

我有一个 R 数据处理问题。我在 .csv 文件中有大量数据,我可以使用 readr 加载这些数据。 .问题是我需要添加到数据框中的缺失值。

示例数据:

X1    X2    Value
Coal 1 300
Coal 3 100
Coal 5 150
NatG 2 175
NatG 4 150

该文件将正确加载。但是,我想添加处理,以便最终数据帧包含每个 X1 类型的条目和 X2 中 1:5 的整个序列,缺失值设置为零。最终的数据框是这样的:
X1    X2    Value
Coal 1 300
Coal 2 0
Coal 3 100
Coal 4 0
Coal 5 150
NatG 1 0
NatG 2 175
NatG 3 0
NatG 4 150
NatG 5 0

我尝试使用 readr 加载一个所有条目都为零的文件,然后将真实数据读入同一个数据帧,但这是一个破坏性的覆盖,丢失的行被删除。我需要知道如何将适当的行添加到数据框中,而不知道 X1 下的每个值将丢失 1:5 序列中的哪些值。

最佳答案

我们可以使用 complete来自 的函数包裹。 complete函数根据提供的列创建组合。 fill参数可以指定填充值。

library(tidyr)

dt2 <- dt %>%
complete(X1, X2, fill = list(Value = 0))
dt2
# # A tibble: 10 x 3
# X1 X2 Value
# <chr> <int> <dbl>
# 1 Coal 1 300
# 2 Coal 2 0
# 3 Coal 3 100
# 4 Coal 4 0
# 5 Coal 5 150
# 6 NatG 1 0
# 7 NatG 2 175
# 8 NatG 3 0
# 9 NatG 4 150
# 10 NatG 5 0

如果缺少某些组值,我们还可以为组合指定组值。例如,我们可以执行以下操作以确保 X2 列中的 1 到 5都考虑过了。
dt2 <- dt %>%
complete(X1, X2 = 1:5, fill = list(Value = 0))

或使用 full_seq ,它将根据列中的最小值和最大值自动创建序列。
dt2 <- dt %>%
complete(X1, X2 = full_seq(X2, period = 1), fill = list(Value = 0))

数据
dt <- read.table(text = "X1    X2    Value
Coal 1 300
Coal 3 100
Coal 5 150
NatG 2 175
NatG 4 150",
header = TRUE, stringsAsFactors = FALSE)

关于r - 填充数据帧中的顺序值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47956575/

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