如何修复 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_A 、 assists_B 、 points_A和points_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 中修复:要替换的元素数量不是替换长度的倍数