如何修复 r: 错误: 行的重复标识符


在 R 中您可能遇到的错误是:

 Error: Duplicate identifiers for rows

当您尝试使用spread()函数将数据框中的一列或多列的值分散到各自的列中时,会发生此错误。

但是,如果每行没有唯一的 ID,则可能会出现错误,因此在运行分布时无法确定哪些值属于哪些观测值。

以下示例展示了如何在实践中纠正此错误。

示例:如何修复错误

假设我们在 R 中有以下数据框,其中包含有关各种篮球运动员的信息:

 #create data frame
df <- data. frame (player=rep(c(' A ', ' B '), each= 4 ),
                 year=rep(1:4, times= 2 ),
                 assists=c(4, 10, 4, 4, 3, 7, 7, 6),
                 dots=c(14, 6, 18, 7, 22, 9, 38, 4))

#view data frame
df

  player year assists points
1 A 1 4 14
2 A 2 10 6
3 To 3 4 18
4 To 4 4 7
5 B 1 3 22
6 B 2 7 9
7 B 3 7 38
8 B 4 6 4

现在假设我们想要将数据框转换为将年份列作为 id 列,并创建名为assiss_Aassists_Bpoints_Apoints_B的新列来表示球员A和B在每年的过程中的助攻和得分值。

由于年份列中的值不会是唯一的(会有两个 1、两个 2 等),因此spread()函数将产生错误。

但是,我们可以使用具有以下语法的pivot_wider()函数来生成所需的数据框:

 library (tidyr)

#spread the values in the points and assists columns
pivot_wider(data = df, 
            id_cols = year, 
            names_from = player, 
            values_from = c(' assists ', ' points '))

# A tibble: 4 x 5
   year assists_A assists_B points_A points_B
                    
1 1 4 3 14 22
2 2 10 7 6 9
3 3 4 7 18 38
4 4 4 6 7 4

请注意,我们没有收到任何错误,并且能够成功创建新列,显示球员 A 和 B 在四年中每年的得分和助攻值。

其他资源

以下教程解释了如何修复 R 中的其他常见错误:

如何在 R 中修复:强制引入的 NA
如何在 R 中修复:索引越界
如何在R中修复:较长物体的长度不是较短物体长度的倍数
如何在 R 中修复:要替换的元素数量不是替换长度的倍数

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注