назначить имя строки во время привязки строки во фрейме данных

Я хочу присвоить имя строки (A_B), пока я связываю строку с новым фреймом данных (d). Строка является результатом соотношения двух строк другого фрейма данных (df).

    df <- data.frame(ID = c("A", "B" ),replicate(3,sample(1:100,2,rep=TRUE)))
    d <- data.frame()
    d<-rbind(d, df[df$ID == "A",2:4 ]/df[df$ID == "B", 2:4])

Фактический результат

    X1   X2   X3
1 0.08 0.14 0.66

Ожидаемый результат. Вместо имени строки 1 я хочу A_B как результат соотношения A_B

       X1   X2   X3
A_B 0.08 0.14 0.66

person Al14    schedule 01.02.2017    source источник
comment
Очень неясно, чего вы пытаетесь добиться. Ваш код выдает ошибку, что такое df? где эти данные?   -  person user5249203    schedule 01.02.2017
comment
Я попытался объяснить это лучше   -  person Al14    schedule 01.02.2017


Ответы (3)


обновлено решение для адресации нескольких строк

Вы можете обойти нужные имена строк из следующего решения....

df <- data.frame(ID = c("A", "B" ),replicate(3, sample(1:100,8,rep=TRUE)))
# This is where you control what you like to see as the row names    
rownames(df) <- make.names( paste("NAME", df[ ,"ID"]) , unique = TRUE)
d <- data.frame()
rbind(d, df[df$ID == "A",2:4 ]/df[df$ID == "B", 2:4], make.row.names = "T")

вывод

               X1        X2         X3
NAME.A   0.8690476 1.1851852 2.40909091
NAME.A.1 1.8181818 0.8095238 1.01408451
NAME.A.2 0.8235294 5.4444444 2.50000000
NAME.A.3 1.4821429 1.8139535 0.05617978
person user5249203    schedule 01.02.2017
comment
Спасибо. Вместо make.row.names=T можно назначить имя строки, которое я выберу, например NAME или A_B - person Al14; 01.02.2017
comment
Я не думаю, что вы можете выбирать, но вы можете контролировать то, что вы хотите отображать. Однако, как я упоминал ранее, вы не сможете иметь повторяющиеся имена строк в сценарии, где есть много строк. Я предполагаю, что, поскольку вы работаете с фреймворком данных, у вас есть несколько строк. - person user5249203; 01.02.2017
comment
Не будет повторяющихся имен строк, каждая строка должна иметь другое имя (A, B, C...). Я хочу рассчитать соотношение разных строк B/A, C/B, B/A и сохранить результат в новом фрейме данных, который также должен сообщать об исходной строке, используемой для расчета отношения. - person Al14; 01.02.2017
comment
Приведенные выше решения предполагают, что вы делите только A/B. Если вы пытаетесь контролировать 3 типа деления и назначать имена строк, то это совершенно новый подход. Обновите свой вопрос, и я посмотрю, что я могу сделать позже. - person user5249203; 01.02.2017
comment
Спасибо, я хочу контролировать имена моего последнего фрейма данных (d) - person Al14; 01.02.2017
comment
если вы знаете, какая строка принадлежит соответствующему расчету. Простым способом было бы rownames (d) <- c("A_B","C_B","B_ A") - person user5249203; 01.02.2017

Может быть, это глупое решение, но вы пытались указать ему имя строки напрямую? Некоторым нравится это:

rbind(d, your_name = (df[df$ID == "A",2:4 ]/df[df$ID == "B", 2:4]))

Для меня это работает... С уважением.

person jgarces    schedule 11.04.2018

Вы можете назначать имена строк, передавая свой вывод rbind в канал функции rownames() и изменяя имя строки по своему усмотрению.

%>% rownames(.) <- c("Name you like")

Просто убедитесь, что вы мутируете правильную строку, которую вы намеревались.

person StudentNYC    schedule 01.08.2021