2011-11-07 50 views
1

我想在更改big data.frame列名稱(names(mp))的幫助下更改其他data.frame中的單個列MP $名)R:從其他data.frame的列元素中匹配列標題並刪除

#first data frame : column chooser, small data.frame with 
# list of columns and other information 

mp <- data.frame(name = c("A", "C", "D"), pos = 1:3) # number of rows 
                #in real dataset is> 5,000 
       name pos 
      1 A 1 
      2 C 2 
      3 D 3 

大數據框,> 10,000變量讀取用感測,但短短四年在這裏

# second data.frame 
mydf <- data.frame(Aa= 1:10, Ab = 11:20, Ba = 21:30, Bb = 31:40, 
Ca = 41:50, Cb = 51:60, Da = 61:60,Db = 61:70) 

顯示在MP $名稱每個值對應於兩個變量 - 例如A對應至Aa ,Ab類似地B對應於Ba和Bb。每一個這樣的重複變量有後綴「A」和「B」如果事情是從MP $名稱中刪除,應在數據幀是myDF刪除相應的列

> mydf 
    Aa Ab Ba Bb Ca Cb Da Db 
1 1 11 21 31 41 51 61 61 
2 2 12 22 32 42 52 60 62 
3 3 13 23 33 43 53 61 63 
4 4 14 24 34 44 54 60 64 
5 5 15 25 35 45 55 61 65 
6 6 16 26 36 46 56 60 66 
7 7 17 27 37 47 57 61 67 
8 8 18 28 38 48 58 60 68 
9 9 19 29 39 49 59 61 69 
10 10 20 30 40 50 60 60 70 

我的想法是。例如,在上面的例子中沒有「B」,因此,列的Ba和Bb應從myDF上被移除,以使新的數據幀mydf1

 mydf1 
     Aa Ab Ca Cb Da Db 
    1 1 11 41 51 61 61 
    2 2 12 42 52 60 62 
    3 3 13 43 53 61 63 
    4 4 14 44 54 60 64 
    5 5 15 45 55 61 65 
    6 6 16 46 56 60 66 
    7 7 17 47 57 61 67 
    8 8 18 48 58 60 68 
    9 9 19 49 59 61 69 
    10 10 20 50 60 60 70 

雖然(對應兩個變量從單個變種的缺失從熔點是myDF這裏示出)被移除,有可以是這樣的缺失的n個和最後的應該保持

幫助理解

回答

3

提取的名稱和它們的長度列名或熔點元素的順序。瞭解長度可以更容易地截斷最後一個字母(a/b後綴);我並不是假設所有的名字都只有2個字符。

nm <- names(mydf) 
lens <- nchar(nm) 

基於沒有最後一個字母的列名的子集。

mydf1 <- mydf[substr(nm, 1, lens-1) %in% mp$name] 
+0

你對字母數的假設是正確的,這是很多變量 – SHRram

相關問題