gpt4 book ai didi

r - 如何使用 spread() reshape 数据框时解决错误

转载 作者:行者123 更新时间:2023-11-30 09:19:54 25 4
gpt4 key购买 nike

我正在尝试将长数据帧转换为宽且标记的情况。我将其旋转并使用一个临时向量作为标志。它在小数据集上完美运行:请参阅示例(复制并粘贴到您的 Rstudio 中),但是当我尝试对真实数据执行此操作时,它会报告错误:

churnTrain3 <- spread(churnTrain, key = "state", value = "temporary", fill = 0) Error: Duplicate identifiers for rows (169, 249), (57, 109), (11, 226)

结构范围的数据集与进一步处理相关有没有办法解决这个问题。我敢打赌很多人尝试清理数据并遇到同样的问题。请帮我这是代码:第一个 block “示例”制作小数据集,以实现良好的可视化效果第二 block “真实数据”是来自流失库的数据集的切片部分

library(caret)
library(tidyr)

#example
#============
df <- data.frame(var1 = (1:6),
var2 = (7:12),
factors = c("facto1", "facto2", "facto3", "facto3","facto5", "facto1") ,
flags = c(1, 1, 1, 1, 1, 1))
df

df2 <- spread(data = df, key = "factors" , value = flags, fill = " ")
df2
#=============

# real data
#============
data(churn)

str(churnTrain)
churnTrain <- churnTrain[1:250,1:4]
churnTrain$temporary <-1
churnTrain3 <- spread(churnTrain, key = "state", value = "temporary", fill = 0)

str(churnTrain)
head(churnTrain3)
str(churnTrain3)
#============

最佳答案

Spread 只能在与点差“键”和其余数据(在流失示例中为 account_length、area_code 和 International_plan)相交的“单元格”中放置一个唯一值。所以真正的问题是如何管理这些重复的条目。答案取决于您想要做什么。我在下面提供了一种可能的解决方案。我没有制作虚拟“临时”变量,而是计算剧集数量并将其用作虚拟变量。这可以使用 dplyr 轻松完成:

library(tidyr)
library(dplyr)
library(C50) # this is one source for the churn data

data(churn)

churnTrain <- churnTrain[1:250,1:4]

churnTrain2 <- churnTrain %>%
group_by(state, account_length, area_code, international_plan) %>%
tally %>%
dplyr::rename(temporary = n)

churnTrain3 <- spread(churnTrain2, key = "state", value = "temporary", fill = 0)

Spread 现在可以使用。

关于r - 如何使用 spread() reshape 数据框时解决错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43928585/

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