R - 错误错误消息 - 错误:行的重复标识符[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我有一个数据框的问题,我需要重塑。

我有这个命令:

library(tidyverse)
df1 = df1 %>% gather(Day, value, Day01:Day31) %>% spread(Station, value)

我收到这个错误:

Error: Duplicate identifiers for rows (130933, 131029), (389113, 389209), (647293, 647389), (905473, 905569), (1163653, 1163749), (1421833, 1421929), (1680013, 1680109), (1938193, 1938289), (2196373, 2196469), (2454553, 2454649), (2712733, 2712829), (2970913, 2971009), (3229093, 3229189), (3487273, 3487369), (3745453, 3745549), (4003633, 4003729), (4261813, 4261909), (4519993, 4520089), (4778173, 4778269), (5036353, 5036449), (5294533, 5294629), (5552713, 5552809), (5810893, 5810989), (6069073, 6069169), (6327253, 6327349), (6585433, 6585529), (6843613, 6843709), (7101793, 7101889), (7359973, 7360069), (7618153, 7618249), (7876333, 7876429), (130934, 131030), (389114, 389210), (647294, 647390), (905474, 905570), (1163654, 1163750), (1421834, 1421930), (1680014, 1680110), (1938194, 1938290), (2196374, 2196470), (2454554, 2454650), (2712734, 2712830), (2970914, 2971010), (3229094, 3229190), (3487274, 3487370), (3745454, 3745550), (4003634, 4003730), (4261814, 4261910), (4519994, 4520090

奇怪的是,我也得到了这个结果:

library(dplyr)
test = rownames_to_column(df1, "VALUE")
length(unique(test$VALUE)) ### Result 258180 = Same as number of rows
length(unique(test$VALUE)) == nrow(test) #### Result TRUE

如您所见,错误消息还包含我的数据帧中甚至不存在的行。

该命令适用于我拥有的1:1相同结构的所有其他数据帧。它们只有较少的行。

我不知道如何为你提供数据帧,因为它非常庞大。我将它上传到我的大学,因此您可以下载数据帧。

这是链接(我希望它允许发布它)

https://megastore.uni-augsburg.de/get/pmAS15z6TN/

r dataframe tidyr tidyverse
1个回答
1
投票

这应该工作。正如评论所指出的那样,这是因为spread试图在gather之后组合不再唯一标识的行。 rowid_to_column是一个将行ID转换为列的简单函数。数字大于原始数据集大小的原因是因为收集后您有一个包含8003580行的数据框。

data2 <- data %>%
    gather(Day, value, Day01:Day31) %>%
    tibble::rowid_to_column() %>%
    spread(Station, value)

我遇到了内存问题,试图在我的笔记本电脑上实际执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.