【发布时间】:2018-05-26 01:44:05
【问题描述】:
我有一个包含 4 列的数据框,其中一列是状态。几行状态相同,如下图:
我想根据州名重命名行。如图所示,我希望将第 1-15 行命名为 texas。
我尝试了以下行rownames(stateSales2) <- stateSales$state
但我收到错误和警告消息
Error in row.names<-.data.frame(`*tmp*`, value = value) :
duplicate 'row.names' are not allowed
In addition: Warning message:
non-unique values when setting 'row.names': ‘alabama’, ‘alaska’, ‘arizona’, ‘arkansas’, ‘california’, ‘colorado’, ‘connecticut’, ‘delaware’, ‘florida’, ‘georgia’, ‘hawaii’, ‘idaho’, ‘illinois’, ‘indiana’, ‘iowa’, ‘kansas’, ‘kentucky’, ‘louisiana’, ‘maine’, ‘maryland’, ‘massachusetts’, ‘michigan’, ‘minnesota’, ‘mississippi’, ‘missouri’, ‘montana’, ‘nebraska’, ‘nevada’, ‘new hampshire’, ‘new jersey’, ‘new mexico’, ‘new york’, ‘north carolina’, ‘north dakota’, ‘ohio’, ‘oklahoma’, ‘oregon’, ‘pennsylvania’, ‘rhode island’, ‘south carolina’, ‘south dakota’, ‘tennessee’, ‘texas’, ‘utah’, ‘vermont’, ‘virginia’, ‘washington’, ‘west virginia’, ‘wisconsin’, ‘wyoming’
任何帮助将不胜感激!
【问题讨论】:
-
错误很明显:所有行名必须完全唯一。如果你想要
"texas"在其中的某个位置,请参阅make.unique(rep('a',5))。 -
错误消息礼貌地暗示某些事情既不是最佳的,也不是首选的。但是考虑一下,当你有一个非常好的列并且逐行告诉你同样的事情时,你为什么要这样做呢?将来,当你想要第 4 行时,说给我第 4 行会比说第 4 行更容易,呃,德州,德州,给我所有的德州,我会解决它。
-
cpersonal,使用行名绝对是一种偏好,但要记住:
data.frames 上的许多操作(即dplyr和其他tibble-使用函数)会擦掉它们。 (我不知道任何严格要求行名的东西。)