Как подсчитать количество ячеек из файла CSV в R? - PullRequest
0 голосов
/ 05 ноября 2019

Имя моего набора данных: student_performance, которое можно увидеть ниже:

gender  race    lunch   math  reading writing 
  2      2        2      72     72      74
  2      3        2      69     90      88
  2      2        2      90     95      93
  1      1        1      47     57      44
  1      3        2      76     78      75
  2      2        2      71     83      78
  2      2        2      88     95      92
  1      2        1      40     43      39
  1      4        1      64     64      67
  2      2        1      38     60      50

Я хочу подсчитать, сколько цифр "2" находится в столбце пола. Для этого я попробовал этот код:

count(studentperformance$gender[1:10], vars = "2")

Но код показывает ошибку. Подскажите пожалуйста как мне этого добиться?

Ответы [ 3 ]

1 голос
/ 05 ноября 2019

Вы можете создать несколько простых таблиц без индексации или сравнения. Попробуйте следующее с count, который вернет переменную gender, содержащую уникальные значения gender, и n, указывающую количество каждого уникального значения:

library(dplyr)
count(df, gender)

#### OUTPUT ####
# A tibble: 2 x 2
  gender     n
   <int> <int>
1      1     4
2      2     6

Вы можете сделать довольнопочти то же самое, используя базовые R table. Вывод немного отличается: уникальные значения теперь представляют собой заголовки переменных 1 и 2, а счетчики - это строки, расположенные сразу под ними, с 4 и 6:

table(df$gender)

#### OUTPUT ####
1 2 
4 6 
0 голосов
/ 05 ноября 2019

Рассмотрим также:

studentperformance <- transform(studentperformance,

                            count_by_gender = ave(studentperformance$gender,

                                                  studentperformance$gender,

                                                  FUN = length))

Данные:

    structure(
  list(
    gender = c(2L, 2L, 2L, 1L, 1L, 2L, 2L, 1L, 1L,
               2L),
    race = c(2L, 3L, 2L, 1L, 3L, 2L, 2L, 2L, 4L, 2L),
    lunch = c(2L,
              2L, 2L, 1L, 2L, 2L, 2L, 1L, 1L, 1L),
    math = c(72L, 69L, 90L,
             47L, 76L, 71L, 88L, 40L, 64L, 38L),
    reading = c(72L, 90L, 95L,
                57L, 78L, 83L, 95L, 43L, 64L, 60L),
    writing = c(74L, 88L, 93L,
                44L, 75L, 78L, 92L, 39L, 67L, 50L),
    count_by_gender = c(6L, 6L,
                        6L, 4L, 4L, 6L, 6L, 4L, 4L, 6L)
  ),
  class = "data.frame",
  row.names = c(NA,-10L)
)
0 голосов
/ 05 ноября 2019

Как сказал @ user2974951, вы можете использовать base R для этого:

sum(studentperformance$gender==2)

[1] 6

Вы также можете создать table для каждого уровня пола:

table(studentperformance$gender,factor(studentperformance$gender))
   1 2
  1 4 0
  2 0 6

Образецданные:

studentperformance <- read.table(text = "gender  race    lunch   math  reading writing 
  2      2        2      72     72      74
  2      3        2      69     90      88
  2      2        2      90     95      93
  1      1        1      47     57      44
  1      3        2      76     78      75
  2      2        2      71     83      78
  2      2        2      88     95      92
  1      2        1      40     43      39
  1      4        1      64     64      67
  2      2        1      38     60      50", header = TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...