如何在我的数据集中分别过滤男性和女性(使用r)?

xriantvc  于 2023-02-20  发布在  其他
关注(0)|答案(2)|浏览(107)

我有一个Excel工作表.csv加载到r。我想过滤我的数据由男性对女性,但当我尝试,我不能弄清楚。我的列标题是男性/女性和大小(毫米),所以我的数据列表要么M或和F和一个数字。
我试着说

Male <- Male/Female %>% filter(M);
Male <- Male/Female %>% filter(Male/Female <= M)

等等。我不确定我做错了什么。
Screenshot of what my current error messages look like, along with what I have so far
Screenshot of the majority of the data table that I'm trying to work with and filter

jjjwad0x

jjjwad0x1#

使用方括号选择行和列。

# dataframe with one column and four rows
df <- data.frame(sex = c('M', 'F', 'M', 'M'))

# filter to keep only men, keeping all columns
df[df$sex == 'M', ]

输出:

[1] M M M
Levels: F M

如果你喜欢dplyr/magrittr:

df %>%
    filter(sex == 'M')
eyh26e7m

eyh26e7m2#

创建一个可重复的例子将帮助你更快地获得帮助。在这里我将向你展示如何用一些简单的数据做到这一点。
创建虚假数据:

library(tibble)
frogData <- tribble(
  ~`Male/Female`, ~`Size(mm)`, 
  "M", 88.1, 
  "M", 96.7,
  "F", 90.7,
  "F", 89.4
)

我在你的代码中发现了几个问题。首先,当使用dplyr语法和管道时,你需要理解什么对象要去哪里。在这种情况下,它可以理解为:

`new object` <- `existing object` %>% `function`.

另一个问题是,原始数据中有非标准的变量名,需要用反勾号 Package 才能在R中使用。为了简化操作,通常最好重命名这些变量。这样做之后,就可以很容易地过滤数据,使其只包含男性记录。请注意,使用==来测试等式语句,=用于赋值(如<-

library(dplyr)
# Rename variables
frogData <- frogData %>% 
  rename(sex = `Male/Female`, 
         size = `Size(mm)`)

# Create dataset with only males
Male <- frogData %>% 
  filter(sex == "M")

相关问题