إعادة تسمية الصفوف والأعمدة في ص
سؤال
أنا أقوم بتشغيل البرنامج النصي التالي:
cause = c(1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2);
time = c(1, 1, 2, 3, 3, 2, 2, 1, 1, 2, 2);
table(cause, time)
وأحصل على ما يلي:
time
cause 1 2 3
1 2 2 2
2 2 3 0
ما أريده هو:
time
cause 1 2 3
Maltreat 2 2 2
Non-Maltr 2 3 0
لذلك، سؤالي هو: كيف يمكنك إعادة تسمية صفوف جدول في ص؟
في نفس الوريد، كيف يمكنك إعادة تسمية أعمدة هذا الجدول؟
المحلول
طريقة واحدة للقيام بذلك هي استخدام العوامل أو قوائم السلاسل بدلا من الفهارس. وبالتالي:
cause1 <- c("Maltreat", "Non-malt")[cause]
> print(cause1)
[1] "Maltreat" "Maltreat" "Maltreat" "Maltreat" "Maltreat" "Non-malt"
[7] "Maltreat" "Non-malt" "Non-malt" "Non-malt" "Non-malt"
> table(cause1, time)
time
cause1 1 2 3
Maltreat 2 2 2
Non-malt 2 3 0
وفي حال كنت قلقا من الذاكرة أو السرعة، فإن R جيد جدا في تمثيل هذا النوع من الأشياء داخليا بكفاءة، مع مجرد مثيل واحد من السلسلة بأكملها المخزنة، والباقي من الفهارس.
بالمناسبة، ستكون أكثر سعادة على المدى الطويل مع إطارات البيانات:
> df <- data.frame(cause=as.factor(c("Maltreat", "Non-malt")[cause]), time=time)
> summary(df)
cause time
Maltreat:6 Min. :1.000
Non-malt:5 1st Qu.:1.000
Median :2.000
Mean :1.818
3rd Qu.:2.000
Max. :3.000
> table(df)
time
cause 1 2 3
Maltreat 2 2 2
Non-malt 2 3 0
نصائح أخرى
هناك طريقتان سهلان للقيام بذلك:
z <- table(cause, time)
استخدم وظائف Colnames / Rownames:
> colnames(z)
[1] "1" "2" "3"
> rownames(z)
[1] "1" "2"
أو استخدم Dimnames:
> dimnames(z)
$cause
[1] "1" "2"
$time
[1] "1" "2" "3"
> dimnames(z)$cause
[1] "1" "2"
في أي حال، اختر أسماءك كجاغر وتعيينها:
> dimnames(z)$cause <- c("Maltreat","Non-malt")
> z
time
cause 1 2 3
Maltreat 2 2 2
Non-malt 2 3 0
لا تنسى قيادة "REVALUE" الرائعة PLYR "و" إعادة تسمية "!
لا تنتمي إلى StackOverflow