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

时间:2017-12-19 01:13:44

标签: r dataframe tidyr tidyverse

我遇到了需要重新整形的数据框的问题。

我有这个命令:

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/

1 个答案:

答案 0 :(得分:1)

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

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

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