r - 在 R 中反转数据帧

标签 r dataframe inversion

这里举个例子。参与者将他们最喜欢的颜色排列在绿色、蓝色和红色之间。 id 代表参与者。每个参与者从 1-3 中对三种颜色进行排名(最好的=1,第二喜欢的=2,最不喜欢的=3)。想象一下数据如下所示:

         id1      id2     id3
 rank1   red     green    blue
 rank2   green   blue     red
 rank3   blue    red      green

我需要更改值,使其看起来像这样:

        id1   id2    id3
 green   2      1     3
 blue    3      2     1
 red     1      3     2 

本质上,我想用颜色创建一行并记录它的排名。我的实际数据框是 25 列 x 100 行。我这样做是因为在版本 1 中数据输入更容易。

更改数据最简单的方法是什么?

最佳答案

应用一个匹配到你的dataframe的每一列:

# example data
df <- data.frame(
    id1 = c("red", "green", "blue"),
    id2 = c("green", "blue", "red"),
    id3 = c("blue", "red", "green"),
    stringsAsFactors = FALSE
)

# create ranking dataframe
sapply(df, match, x=c("green", "blue", "red"))

结果:

  id1 id2 id3 
1   2   1   3 
2   3   2   1 
3   1   3   2 

关于r - 在 R 中反转数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52208824/

相关文章:

r - 如何使用 ggplot2 在单个单元格中绘制具有多个类别的热图?

r - 创建一个新列,其中每个元素是其他两列的子集计数,无循环

python - 如何创建一个具有一个索引键列和多个值列的字典

python - Pandas - df.at 功能错误 - python

android - 获取启用/禁用状态和可访问性颜色反转模式

r - 忽略 tryCatch() 中的简单警告/错误

r - 自毁功能

r - 在 R 中绘制时间序列(24 小时)

c - 如何有效地仅反转分配矩阵的一部分