Ссылка на метки столбцов при создании новых переменных в R

Я очистил фрейм данных в R следующим образом:

page.201702050atl = read_html("http://www.pro-football-reference.com/boxscores/201702050atl.htm")
comments.201702050atl = page.201702050atl %>% html_nodes(xpath = "//comment()")
team.stats.201702050atl = comments.201702050atl[27] %>% html_text() %>% read_html() %>% html_node("#team_stats") %>% html_table()
> team.stats.201702050atl
                                NWE           ATL
1         First Downs            37            17
2        Rush-Yds-TDs      25-104-2      18-104-1
3   Cmp-Att-Yd-TD-INT 43-63-466-2-1 17-23-284-2-0
4        Sacked-Yards          5-24          5-44
5      Net Pass Yards           442           240
6         Total Yards           546           344
7        Fumbles-Lost           1-1           1-1
8           Turnovers             2             1
9     Penalties-Yards          4-23          9-65
10   Third Down Conv.          7-14           1-8
11  Fourth Down Conv.           1-1           0-0
12 Time of Possession         40:31         23:27
> str(team.stats.201702050atl)
'data.frame':   12 obs. of  3 variables:
 $    : chr  "First Downs" "Rush-Yds-TDs" "Cmp-Att-Yd-TD-INT" "Sacked-Yards" ...
 $ NWE: chr  "37" "25-104-2" "43-63-466-2-1" "5-24" ...
 $ ATL: chr  "17" "18-104-1" "17-23-284-2-0" "5-44" ...

Как видите, R очищает эту таблицу с уже помеченными 2-м и 3-м столбцами. Я хотел бы дать этим столбцам общие ярлыки и переместить c("", "NWE", "ATL") в саму таблицу, чтобы я мог с ней работать. Кроме того, я хотел бы заполнить эту пустую ячейку при перемещении строки в таблицу своим собственным текстом. Другими словами, я хочу получить что-то вроде:

> team.stats.201702050atl.a
                       V1            V2            V3
    1                  Tm           NWE           ATL
    2         First Downs            37            17
    3        Rush-Yds-TDs      25-104-2      18-104-1
    4   Cmp-Att-Yd-TD-INT 43-63-466-2-1 17-23-284-2-0
    5        Sacked-Yards          5-24          5-44
    6      Net Pass Yards           442           240
    7         Total Yards           546           344
    8        Fumbles-Lost           1-1           1-1
    9           Turnovers             2             1
    10     Penalties-Yards          4-23          9-65
    11   Third Down Conv.          7-14           1-8
    12  Fourth Down Conv.           1-1           0-0
    13 Time of Possession         40:31         23:27

Я знаю, что мог бы сделать что-то вроде:

team.stats.201702050atl.a = as.data.frame(t(team.stats.201702050atl))
team.stats.201702050atl.a$r1 = c("Tm", "NWE", "ATL")
team.stats.201702050atl = as.data.frame(t(team.stats.201702050atl.a))

... но как заставить R ссылаться на метки столбцов в team.stats.201702050atl$V2 и team.stats.201702050atl$V3 напрямую, не вводя их явно? И как мне это сделать, вставляя собственный исходный текст в первый столбец этой строки?


person DataProphets    schedule 04.03.2017    source источник


Ответы (1)


Вам не нужно транспонировать, вы можете использовать rbind, чтобы добавить вектор имен столбцов в виде строки, например:

team.stats.201702050atl2 <- rbind(c("Tm", "NWE", "ATL"), team.stats.201702050atl)

Или напрямую свяжите имена столбцов, используя имена столбцов, и добавьте отсутствующее значение «Tm»:

team.stats.201702050atl2 <- rbind(colnames(team.stats.201702050atl), team.stats.201702050atl)
team.stats.201702050atl2[1,1] <- "Tm"

См. ?colnames и ?rownames, чтобы получить ссылки на имена столбцов и строк. Например, вы можете ссылаться на конкретное имя столбца с помощью индексации. Например: colnames(team.stats.201702050atl2)[1] или colnames(team.stats.201702050atl2)[2:3], и это дает другой подход:

team.stats.201702050atl2 <- rbind(c("Tm", colnames(team.stats.201702050atl)[2:3]), team.stats.201702050atl)

Или вариант:

team.stats.201702050atl2 <- rbind(c("Tm", colnames(team.stats.201702050atl)[2:ncol(team.stats.201702050atl)]), team.stats.201702050atl)

Наконец, назначьте новые имена столбцов, используя имена столбцов:

colnames(team.stats.201702050atl2) <- c("V1", "V2", "V3")
person Djork    schedule 04.03.2017