为字符串赋值

use*_*568 9 r

我对我的调查做出了回应,data.frame(Analysis)其中包括:

Q1 <- c("Agree", "Strongly Agree", "Disagree", "Neither", "Agree", "Neither")

我希望根据每个响应的级别为每个响应分配一个值.例如,"Strongly Agree"收到2,同时"Agree"得到1分.我想要的输出是:

Q1 <- c("Agree", "Strongly Agree", "Disagree", "Neither", "Agree", "Neither")
Q1_Score <- c(1, 2, -1, 0, 1, 0)

这似乎是一个简单的问题,但我很难找到答案!

谢谢.

Tim*_*sen 9

您可以使用revalueplyr包中你创建一个新的因素柱Analysis与改名级别的数据帧:

library(plyr)
Analysis$Q1_Score <- revalue(Analysis$Q1,
               c("Strongly Agree"="2", "Agree"="1", "Neither"="0", "Disagree"="-1"))
Run Code Online (Sandbox Code Playgroud)


jal*_*pic 5

您可以将值和代码放在单独的数据框中,然后使用match它们将它们放入主数据框中:

dat <- data.frame(Q1,Q1_Score)

Analysis$Q1_Score <- dat$Q1_Score[match(Analysis$Q1, dat$Q1)]
Run Code Online (Sandbox Code Playgroud)

  • 或者甚至只是`c("强烈同意"= 2,"同意"= 1,"两者都不是"= 0,"不同意"= - 1)[Q1] (3认同)