R语言 把列中的值转换为数据框架的行名
R语言中的行名默认映射为行号,以整数值1开始。行名可以很容易地被修改,并重新分配给任何可能的字符串向量,以分配自定义的名称。由于行号在数据框架的每一列中实际上是相等的,因此列值也可以分配给R中的行名。
方法1:使用rownames()方法
R中的rownames()方法被用来为数据框架分配行名。它是用一个字符向量来分配的,该向量由所需的名字组成,其长度相当于数据框架中的行数。我们可以简单地将其分配给数据框架的任何一列,如果它包含所有唯一的值。可以使用标准的索引方法访问该列,即df$col_name
或df[,col_indx]
。这些变化都是对原始数据框架进行的。row.names(df)也可以用来代替rownames()方法。
语法:
rownames(df)/row.names(df) <- df$col_name
rownames(df)/row.names(df) <- df[,col_indx]
例子
输出
然而,如果我们试图在这种情况下将col2分配为数据框架的行名,R代码会抛出一个异常,因为重复的行名是不允许的,因此一个重要的条件是,列值必须是唯一的,以便将它分配给数据框架的行名。
方法2:使用tiddle
tiddle包可以安装在工作空间中,以便对数据框架的行名进行操作。首先,这个包中的remove_rownames方法被应用在数据框架上,它删除了对现有行名的引用,然后调用column_to_rownames()方法。它的参数是列名,我们希望将其值分配给数据框架的行名。然而,这些变化必须存储在原始数据框架中,以便进一步使用。
例子
输出
方法3:使用row.names作为创建数据框架的参数
一个新的数据框架可以使用现有的数据框架创建,它的参数是row.names属性映射到列,其值被映射到行名。然而,这将导致从数据框架中删除该列,并且,列的数量将因此减少1。因此,这种方法可能会导致数据的不明确性。
例子
输出