при создании данных не имеет имени - PullRequest
0 голосов
/ 12 октября 2018
dataset=structure(list(goods = structure(1:6, .Label = c("a", "b", "c", 
"d", "e", "f"), class = "factor")), .Names = "goods", class = "data.frame", row.names = c(NA, 
-6L))

  goods
1     a
2     b
3     c
4     d
5     e
6     f

Я хочу создать новые данные, просто я делаю

df1=dataset$goods

, но после этого у df1 нет названия товаров в столбце.Почему?

str(df1)
 Factor w/ 6 levels "a","b","c","d",..: 1 2 3 4 5 6

Как вы можете видеть, у него нет имени goods Как сделать так, чтобы данные df1 имели имя столбца товаров?

Если этот пост дублирующий, дайте мне знать,я удаляю это.

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Вы назначаете вектор столбца, а не фрейм данных.Чтобы назначить весь фрейм данных, просто выполните

df = dataset

Если вы хотите сохранить только некоторые столбцы, а не все, используйте подмножество столбцов ( документация ):

df = dataset[, "goods", drop = FALSE]

drop = FALSE здесь необходимо, потому что в противном случае оператор подмножества фрейма данных будет возвращать вектор вместо фрейма данных с одним столбцом (это, вероятно, ошибка, из-за чего tidyverse tibbles ведут себя по-разному).

Используя операции Tidyverse (иначе говоря, «современный» путь R), это будет записано как

library(dplyr)
df = select(dataset, goods)
0 голосов
/ 12 октября 2018

df1=data.frame(goods=dataset$goods, stringsAsFactors=F) работает отлично, или вы можете использовать более длинную, но (несколько?) Более явную:

ds <- dataset[,c("goods")]
df1=data.frame(goods=dataset$goods)
library(dplyr)
ds <- dataset[,c("goods")] %>% as.data.frame(stringsAsFactors=F)
colnames(ds) <- "goods"

edit: добавлен параметр stringsAsFactors, так как он полезен для управления тем, где вы хотитекоэффициент преобразования или нет.c("goods") эквивалентно "goods", но я оставил его как шаблон на случай, если вам нужно будет добавить больше столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...