首页 > 解决方案 > 在R中交换变量中的值?

问题描述

我是使用 R 的新手,我正在尝试解决一个基本问题。因此,我正在从 Excel 工作表中读取一些数据,工作表上的每一列都对应一个测试项目(每个项目的得分为真或假,1 或 2)。我已经确定并子集了我有兴趣使用此功能的特定列/项目:

CD <- paste("items",c(1,5,11,13,17,20,21,23,28,31,34,47,59,65,72,77,82,86), sep="")

这是我想做的事情:对于某些列/项目,我想将所有 2 的分数更改为 1 的分数。同样,我想将所有 1 的分数更改为 2 分。我该怎么做呢?

标签: r

解决方案


循环遍历列更新值:

# example data
set.seed(1); myData <- data.frame(matrix(sample(1:2, 25, replace = TRUE), ncol = 5))
myData
#   X1 X2 X3 X4 X5
# 1  1  1  1  2  1
# 2  2  1  1  2  1
# 3  1  1  1  2  1
# 4  1  2  1  2  1
# 5  2  2  1  1  1

# columns we want to update
CD <- paste0("X", 1:3)

# loop and update
myData[ CD ] <- lapply(myData[ CD ], function(i) c(2:1)[ i ])

myData
#   X1 X2 X3 X4 X5
# 1  2  2  2  2  1
# 2  1  2  2  2  1
# 3  2  2  2  2  1
# 4  2  1  2  2  1
# 5  1  1  2  1  1

推荐阅读