Вопрос

Пожалуйста, с r newbie здесь.Я пытаюсь следовать вместе с учебником, опубликованный на прекрасном сайте flowwaydata.com, используя свои собственные данные, чтобы заменить файл .rdata, включенный в учебное пособие.Файл RDATA, «Unisexcnts.rdata», содержит имена унисекс и количество раз, используемых для разных лет:

head(unisexCnts)
        1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951
Addison    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
Alexis     0    0    0    0    0    0    0    0    0    0    0   12    0    0    0    0    0    0    0    0    0    0
Ali        0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
Alva       0    0  312  273  274  263    0  273    0  255  235  195  222    0  195    0  193  225  204  196  177  156
Amari      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
Angel      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
        1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973
Addison    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
Alexis     0    0    0    0    0    0    0    0    0    0    0    0  190    0    0  325    0    0    0    0    0    0
Ali        0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  243  219  214
Alva     177  132  159  178  145  138  131  119  119  119  127   97  107   97   83   76   83   90   84   81   58   68
Amari      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
Angel      0    0    0    0    0    0    0    0    0 1264    0    0    0    0    0    0    0 1579 2145 2488    0    0
        1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995
Addison    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0  595  664
Alexis     0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
Ali        0    0    0    0    0    0    0    0    0    0    0    0  561  565  556  643  747  722    0  742    0    0
Alva      54   57   53   54   59   40   62    0   48    0   28    0   34    0    0    0    0    0    0    0    0   26
Amari      0    0    0    0    0    0   11    0    0    0    0    0   16    0   22    0   32    0    0    0    0    0
Angel   2561 2690 2779    0    0 3004 3108 3113 3187 2924 3100 3341 3229 3101 3532 3889 4066 4520    0    0    0    0
        1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012
Addison  778  889    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
Alexis     0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
Ali        0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
Alva       0    0    0   19    0   14    0    0    0    0    0   24    0    0    0    0    0
Amari      0    0    0    0    0    0 1181 1397 1333 1299 1265 1550 1780    0    0    0    0
Angel      0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0    0
.

Когда я пропускаю его через функцию str (), я получаю фоллу:

str(unisexCnts)
 num [1:121, 1:83] 0 0 0 0 0 0 16 0 0 0 ...
 - attr(*, "dimnames")=List of 2
  ..$ : chr [1:121] "Addison" "Alexis" "Ali" "Alva" ...
  ..$ : chr [1:83] "1930" "1931" "1932" "1933" ...
.

Мои данные в файле CSV, называемые «Boysnames.csv»:

 ,2013,2012,2011,2010,2009,2008
    Jack,764,831,840,935,1068,1151
    James,746,773,796,746,711,737
    Daniel,678,683,711,792,842,828
    Conor,610,639,709,726,776,857
.

Я пытаюсь перезаписать Unisexcnts.rdata с содержанием моих Boybsnames.csv.Итак, реструктурировать и получить мой CSV готовый для сохранения, я сделал:

Шаг1.

unisexCnts<-data <- read.csv("boysnames.csv", stringsAsFactors=FALSE, header=TRUE, check.names = FALSE)
.

Шаг2.

unisexCnts<-as.matrix(unisexCnts)
.

Шаг3.

save(file="unisexCnts.RData")  ##save as Rdata file, overwriting the original unisexCnts.RData in the dir 
.

Однако я получаю следующее после шагов 1 и 2, которые не соответствуют структуре оригинала, любых идей / указателей?

> str(unisexCnts)
 chr [1:100, 1:7] "Jack" "James" "Daniel" "Conor" "Sean" "Adam" "Ryan" "Michael" "Harry" "Noah" ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:7] "" "2013" "2012" "2011" ...
.

Это было полезно?

Решение

Когда вы загружаете файл .csv, вы можете указать столбец, который должен стать именами строк загруженных данных, используя команду «ROW.Names»

Я быстро воссоздал ваши данные и загрузил его, используя следующий код:

read.csv('test.csv', stringsAsFactors = F,head = T, row.names = 1)
.

Это сохраняет вам необходимость выполнять эту работу после загрузки данных.Это дает вам структуру данных, которые вы также ищете:

unisexCnts = read.csv('test.csv', stringsAsFactors = F,head = T, row.names = 1)
unisexCnts = as.matrix(unisexCnts)
str(unisexCnts)
int [1:4, 1:6] 764 746 678 610 831 773 683 639 840 796 ...
- attr(*, "dimnames")=List of 2
 ..$ : chr [1:4] "Jack" "James" "Dan" "Conor"
 ..$ : chr [1:6] "X2013" "X2012" "X2011" "X2010" ...
.

Другие советы

Однако я получаю следующее после шагов 1 и 2, что не соответствует Структура оригинала, любых идей / указателей?

В исходном генеракодицетахкоде имена указаны как имена строк. Вот почему первый атрибут является

  ..$ : chr [1:121] "Addison" "Alexis" "Ali" "Alva" ...
.

повторить это в вашем примере. Вы можете установить имена в качестве раутрина, указав

unisexCnts

Это сделает выходной матч.

Причина этой линии:

 chr [1:100, 1:7] "Jack" "James" "Daniel" "Conor" "Sean" "Adam" "Ryan" "Michael" "Harry" "Noah" ...
.

не соответствует этой линии

 num [1:121, 1:83] 0 0 0 0 0 0 16 0 0 0 ...
.

одинаково. У вас есть имена, включенные в фактическую матрицу. В матрице вы можете иметь только данные одинаковых Тип . Включая данные символов в матрице (имена), вы преобразуете всю матрицу в символ / строки.

в резюме Удалите вектор от матрицы и используйте его как имена строк, а генеракодицетагкод ваших двух объектов будет совпадать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top