質問
ここでR初心者にご負担ください。私は素晴らしい上で公開されたチュートリアルと一緒に従うことを試みていますflowingdata.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()関数を介してそれを実行すると、私はfollwoingを取得します:
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" ...
私のデータは、"boysnames"と呼ばれるcsvファイルにあります。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を上書きしようとしています。私のboysnamesの内容を持つRData。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の後に次のようになります オリジナルの構造、任意のアイデア/ポインタ?
オリジナルでは unisexCnts
名前は行名として指定されます。そのため、最初の属性は次のとおりです
..$ : chr [1:121] "Addison" "Alexis" "Ali" "Alva" ...
あなたの例でそれを複製する。名前をrownamesとして設定するには、次のように指定します
rownames(unisexCnts) <- ListorOrVectorofNamesHere
これにより、出力が一致します。
この行の理由:
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 ...
同じです。実際の行列自体に名前が含まれています。行列では、同じデータのみを持つことができます タイプ .行列(名前)に文字データを含めることで、行列全体自体を文字/文字列に変換します。
要約すると
行列から名前ベクトルを削除し、それを行名として使用し、行名として使用します。 str()
あなたの2つのオブジェクトの一致します。