【问题标题】:How to select cases in R?如何在 R 中选择案例?
【发布时间】:2020-01-27 17:44:31
【问题描述】:

我渴望实现从 SPSS 到 R 的飞跃。

SPSS 中使用的一个常用命令是应用过滤。有人可以告诉我为什么会收到错误消息吗?

2019dataset=read.spss("C:\\SPSS data\\2019dataset.sav")

selected_2019dataset <- 2019dataset[ which(2019dataset$hhweight > 0 & 2019dataset$income~=0 & 2019dataset$age > 16 & 2019dataset$age < 59),]

我收到一条错误消息,提示存在意外的“=”

我试图在 SPSS 语法中复制的过滤器是:

SELECT IF ((hhweight > 0) AND (income~=0) AND (age > 16 AND age <59)).

我一直在关注这里的示例:

https://www.statmethods.net/management/subset.html

感谢任何建议。

谢谢。

【问题讨论】:

  • 波浪号是 R 中的一个函数,而不是一个否定运算符。

标签: r spss


【解决方案1】:

而不是2019dataset$income~=0

如果你想“不等于”试试2019dataset$income!=0

或者2019dataset$income==0如果你想“等于”

空格可能会使阅读更清晰,因此2019dataset$income != 02019dataset$income == 0 将是一种改进,您可能不需要which,但这些不太重要

【讨论】:

  • 另外,请查看?Comparison 以获取 R 中关系运算符的完整列表。
  • 非常感谢 :)
  • 如果我想从 SPSS 重新编码:IF ((any (householdtype, 11, 12, 13, 21, 42, 33)) AND (sex = 1)) hhsex = 1. into R :hhtype_selected_dataset
  • R 在此处使用 ==,但您也可以将 %in% 与 hhtype_selected_dataset 一起使用
【解决方案2】:

我从 SPSS 过渡到 R,我更喜欢使用 tidyverse 包,我认为它更直观一些。

您的代码如下所示:

library(tidyverse)    
selected_2019dataset <- 2019dataset %>%
    filter(hhweight > 0 & income == 0 & age > 16 & age < 59)

【讨论】:

  • 看起来不错!一旦我掌握了 R ,我就会转向这个替代方案 :)
猜你喜欢
  • 2017-03-20
  • 1970-01-01
  • 2014-05-09
  • 2020-04-04
  • 2018-04-13
  • 2011-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多