שְׁאֵלָה:
מציאת אינדקס העמודות לפי שמו ב- R
patrickmdnet
2011-04-25 05:44:10 UTC
view on stackexchange narkive permalink

במסגרת נתונים, ברצוני לקבל את אינדקס העמודה לפי שם. לדוגמא:

  x <- data.frame (foo = c ('a', 'b', 'c'), bar = c (4,5,6), quux = c (4,5,6))  

אני רוצה לדעת את אינדקס העמודות של "בר".

הבאתי את הדברים הבאים אבל זה נראה לא אלגנטי. האם יש מבנה פשוט יותר שחסר לי?

  seq (1, length (names (x)))] [names (x) == "bar"] [1] 2  קוד> 
גם 'התאמה ("סרגל", שמות (x)) `פועלת, אם כי' התאמה 'שימושית הרבה יותר כאשר הטיעון הראשון הוא גם וקטור.
האם אתה באמת זקוק לאינדקס העמודה? אתה יכול גם להשתמש ב- x [, "bar"] כדי לקבל את העמודה כולה, בדומה לסרגל ה- x \ $ הרגיל. ובשני המקרים, מנוי את השורות: x [2: 3, "bar"] או x \ $ bar [2: 3]. אם אתה צריך להזין את האינדקס לשגרה שדורשת אינדקס, זה לא מועיל, כמובן.
באה, זה כל הזמן מבלגן את סימני הדולר שלי. בשורה התחתונה ישנן שתי דרכים להשתמש בשם של העמודה בשיטת סימן הדולר וכלול אותה כמנוי.
נראה כי שאלה זו אינה נושא מכיוון שהיא נוגעת כיצד לעשות משהו ב- R, ולא בנושאים סטטיסטיים קשורים.
שתיים תשובות:
kohske
2011-04-25 05:59:03 UTC
view on stackexchange narkive permalink

כנראה זו הדרך הפשוטה ביותר:

  אשר (names (x) == "bar")  
Henrik
2011-04-25 15:02:15 UTC
view on stackexchange narkive permalink

רק כדי להוסיף אפשרות נוספת:
בדרך כלל אתה יכול להשתמש ב grep וזה גזירות (כלומר, grepl, לבצע עבודות מסוג זה בצורה מתוחכמת יותר באמצעות ביטויים רגולריים.

בדוגמה שלך אתה יכול לקבל את אינדקס העמודות עם:

grep ("^ bar $", colnames (x)) או grep ("^ סרגל $ ", שמות (x))

ה ^ ו- $ הם תווי מטא לתחילת וסיום מחרוזת, בהתאמה.

בדוק? grep ובמיוחד? regex למידע נוסף (כלומר, אתה יכול לתפוס רק שמות / התאמות חלקיות, או שער ההחזרה הוא המחרוזת עצמה או וקטור לוגי, ...)

בשבילי, grep הוא יותר R-ish.

החבילה האחרונה של הדלי וויקהם קשורה מאוד: stringr, חבילה עבור "עיבוד מחרוזות מודרני ועקבי" כולל פונקציות כמו grep. לאחרונה הוא פרסם מאמר עליו בכתב העת R.

ראה גם את התשובה שלי בנושא stackoverflow על בעיה זהה.



שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 3.0 עליו הוא מופץ.
Loading...