سؤال

يرجى تحمل مبتدئ 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() سوف يتطابق الكائنان الخاصان بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top