R: сопоставление заголовка столбца из элементов столбца другого data.frame и удаление - PullRequest
1 голос
/ 07 ноября 2011

Я хочу внести изменения в имена больших столбцов data.frame (имена (mp)) с помощью замены одного столбца из другого data.frame (mp $ name)

#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 $ name соответствует двум переменным - например, A соответствует Aa, Ab аналогично B соответствуют Ba и Bb.Каждая такая дублированная переменная имеет суффикс "a" и "b"

> 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

Моя идея состоит в том, что если что-то удаляется из mp $ name, следует удалить соответствующий столбец в фрейме данных mydf.Например, в приведенном выше примере нет «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

Хотя есть удаление одного var из mp (соответствующего двумпеременные из mydf показаны здесь) удаляется, таких удалений может быть n, и в финале должен поддерживаться порядок имен столбцов или элементов mp

Помощь приветствуется

1 Ответ

3 голосов
/ 07 ноября 2011

Извлеките имя и их длину.Знание длин облегчает отрывание последней буквы (суффикс a / b);Я не предполагаю, что все имена состоят только из 2 символов.

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

Подмножество на основе имен столбцов без последней буквы.

mydf1 <- mydf[substr(nm, 1, lens-1) %in% mp$name]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...