【问题标题】:combining variable columns with same values within the same dataset into a new variable将同一数据集中具有相同值的变量列组合成一个新变量
【发布时间】:2015-12-04 05:51:24
【问题描述】:

正在使用的数据集在这个 google sheet 链接中 https://docs.google.com/spreadsheets/d/1eV33Sgx_UVtk2vDtNBc4Yqs_kQoeffY0oj5gSCq9rCs/edit#gid=1959019385&vpid=A1

AMC.dataset$ExamMC.A<-surveySP15$Exams_A
AMC.dataset$ExamMC.A<-factor(NA, levels=c("TRUE", "FALSE"))
AMC.dataset$ExamMC.A[AMC.dataset$Exams_A=="1 time"|AMC.dataset$Exams_A=="2-4 times"|AMC.dataset$Exams_A==">4 times"]<-"TRUE"
AMC.dataset$ExamMC.A[AMC.dataset$Exams_A=="0 times"]<-"FALSE"
AMC.dataset$ExamMC.A=as.logical(AMC.dataset$ExamMC.A)

我使用这 5 行代码将所有 9 个 Exams_A 到 Exams_I 变量重新编码为逻辑二进制结果“真”,以供那些对这 9 个变量中的任何一个回答 1 次或多次的人使用。我想将所有这些变量组合到数据集中的一个新列中,对于每个观察行,如果整行中的 9 个考试 A 到 I 中的任何一个都存在“真”的情况,则新变量结果将读取为“真实”,这意味着他们至少犯过一次数据集中记录的 9 种考试学术不端行为中的任何一种。如果观察行中没有真实结果,我希望新变量结果读作“错误”,这意味着他们(观察行)从未犯过考试学术不端行为

我对这个新变量的代码有什么

surveySP15$ExamMC = any(surveySP15$ExamMC.A, surveySP15$ExamMC.B, surveySP15$ExamMC.C, surveySP15$ExamMC.D, surveySP15$ExamMC.E, surveySP15$ExamMC.F, surveySP15$ExamMC.G, surveySP15$ExamMC.H, surveySP15$ExamMC.I)

但是这个设置似乎被字符串中的最后一个变量大小写覆盖 (AMC.dataset$ExamMC.I)

【问题讨论】:

  • 请展示一个可重现的例子和预期的输出
  • 原来的 9 个变量值最初有 4 个不同级别的值“0 次”、“1 次”、“2-4 次”、“>4 次”,我重新编码这 9 个变量以产生如果值为 1 次或更多,则输出 true,因此“1 次”、“2-4 次”和“>4 次”都产生逻辑结果“TRUE”,“0 次”值产生“FALSE”结果,
  • 我想创建一个新变量,它结合了所有九个变量的结果,这样如果在一行中,9 个变量中的任何一个的情况为真,新变量就会有结果真实的;但是,如果所有 9 个变量的结果都为 false,那就是我希望这个新变量的结果也为 False
  • 如果你展示一个小例子和基于它的预期输出,其他人会更容易理解和回答。
  • 如果我能做到这一点,我就不会遇到问题,老实说,我以为我给你的是你要求的样品。不过,您下面的人似乎理解我。谢谢。

标签: r merge cbind


【解决方案1】:

这是一种方法:

a <- c("0 times", "1 time", "2-4 times", ">4times")
b <- rev(c("0 times", "1 time", "2-4 times", ">4times"))
df <- data.frame(a, b)
df2 <- apply(df, 2, function(x) x %in% "0 times") ## you can also use x == "0 times". 
## %in% allows using vectors, i.e. x %in% c("0 times", "1 times")

apply(df2, 1, any)
# [1]  TRUE FALSE FALSE  TRUE

将最后一行扩展到您的 data.frame:

dataset$new.variable <- apply(dataset[c("variable1.new", "variable2.new", 
"variable3.new", "variable4.new", "variable5.new", "variable6.new", 
"variable7.new", "variable8.new", "variable9.new")], 1, any)

【讨论】:

  • 非常感谢!现在我可以完成我的项目了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-08
相关资源
最近更新 更多