سؤال
يرجى تحمل مبتدئ R هنا.أحاول متابعة البرنامج التعليمي المنشور على موقعflowdata.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 بمحتويات ملف boysnames.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"
قمت بإعادة إنشاء بياناتك بسرعة وتحميلها باستخدام التعليمات البرمجية التالية:
giveacodicetagpre.هذا يحفظ عليك القيام بهذا العمل بعد تحميل البيانات.هذا يمنحك بنية البيانات التي تبحث عنها أيضا:
giveacodicetagpre.نصائح أخرى
ومع ذلك ، أحصل على ما يلي بعد الخطوات 1 و 2 التي لا تتطابق مع بنية الأصل ، أي أفكار/مؤشرات؟
في الأصل unisexCnts
يتم تحديد الأسماء كأسماء الصفوف.ولهذا السبب فإن السمة الأولى هي
..$ : chr [1:121] "Addison" "Alexis" "Ali" "Alva" ...
لتكرار ذلك في المثال الخاص بك.يمكنك تعيين الأسماء كأسماء صفوف عن طريق التحديد
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()
سوف يتطابق الكائنان الخاصان بك.