Как получить все значения одного столбца на основе другого столбца в R? - PullRequest
0 голосов
/ 19 июня 2020

В моем первом столбце у меня есть числовые идентификаторы c, а во втором столбце - символьный столбец, который, например, определяет любимые виды спорта субъекта.

X1       X2
001      NBA
001      MLS
001      MLB
002      UFC
002      NFL
002      NHL
002      NBA
003      MLB
003      NBA

У меня есть тысячи таких точек данных и я хочу, чтобы выходные данные могли показать мне уникальные значения в столбце 2 (X2), если значение в столбце 1 (X1) равно 001, 002 или 003.

Ответы [ 2 ]

0 голосов
/ 19 июня 2020
d <- read.table(header=TRUE, text="X1       X2
001      NBA
001      MLS
001      MLB
002      UFC
002      NFL
002      NHL
002      NBA
003      MLB
003      NBA")

tapply(d$X2, d$X1, unique)

дает список длиной три:

> str(tapply(d$X2, d$X1, unique))
List of 3
 $ 1: chr [1:3] "NBA" "MLS" "MLB"
 $ 2: chr [1:4] "UFC" "NFL" "NHL" "NBA"
 $ 3: chr [1:2] "MLB" "NBA"
 - attr(*, "dim")= int 3
 - attr(*, "dimnames")=List of 1
  ..$ : chr [1:3] "1" "2" "3"
0 голосов
/ 19 июня 2020

Ваш фрейм данных:

df = structure(list(X1 = c("001", "001", "001", "002", "002", "002", 
"002", "003", "003"), X2 = structure(c(3L, 2L, 1L, 6L, 4L, 5L, 
3L, 1L, 3L), .Label = c("MLB", "MLS", "NBA", "NFL", "NHL", "UFC"
), class = "factor")), row.names = c(NA, -9L), class = "data.frame")

Чтобы стать уникальным для всех X2 с X1 в 001 002 003:

unique(df$X2[df$X1 %in% c("001","002","003")])
[1] NBA MLS MLB UFC NFL NHL

Чтобы получить уникальный X2 в X1s:

unique(df[df$X1 %in% c("001","002","003"),])
   X1  X2
1 001 NBA
2 001 MLS
3 001 MLB
4 002 UFC
5 002 NFL
6 002 NHL
7 002 NBA
8 003 MLB
9 003 NBA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...