在一项实验中,人们有四个候选人可供选择;有时他们是男性,有时他们是女性。在下面的数据框中,C1 表示候选 1,C2 表示候选 2,依此类推。F 表示女性,而 M 表示男性。响应为 1 表示该人选择了 C1,响应为 2 表示该人选择了 C2,依此类推。
C1 C2 C3 C4 response
F F M M 2
M M F M 1
我想要一个新列“ChooseFemale”,如果候选人选择了女性候选人,则等于 1,否则为零。所以第一行应该有 ChooseFemale 等于 1,而第二行应该有 ChooseFemale 等于 0。
这将要求我根据“响应”列的值查找某个列。
我怎样才能做到这一点?
另一个基本的 R 解决方案:
x <- df[["response"]]
df$ChooseFemale <- as.integer(df[cbind(seq_along(x), x)] == "F")
C1 C2 C3 C4 response ChooseFemale 1 F F M M 2 1 2 M M F M 1 0
数据:
Lines <- "C1 C2 C3 C4 response
F F M M 2
M M F M 1"
df <- read.table(text = Lines, header = TRUE, stringsAsFactors = FALSE)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句