2015-03-09 2 views
1

Я бы хотел (а) рассрочка рассчитать сумму над двумя data.frame s. Вот мой data.frame U_dataвычислить средние по mulitple фреймы данных

ID Rating 
1  3.4 
2  4.5 
3  2.1 

Вот мой второй data.frame M_data

M  Rating 
M1 3.4 
M2 2.9 
M3 4.7 
M4 5.0 

Мне нужно создать новые data.frame avg_data, которые добавляют с соответствующими данными в выше data.frame и минус 1. Например, для ID 1, M2, 3,4+ 2,9-1 = 5,3.

ID M1 M2 M3 M4 
1  5.8 5.3 7.1 7.4 
2 
3       

Может ли кто-нибудь помочь мне с этой проблемой?

ответ

0

Попробуйте это (предполагается, что ваш U_data является df1 и M_data является df2):

res <- t(sapply(df1[,2], function(x) x + df2[,2]-1)) 
colnames(res) <- df2[,1] 
data.frame(ID = df1[,1], res) 
    ID M1 M2 M3 M4 
1 1 5.8 5.3 7.1 7.4 
2 2 6.9 6.4 8.2 8.5 
3 3 4.5 4.0 5.8 6.1 
+0

Благодаря @RStudent, это действительно работает! – summer

1
# Does this work for you? 
df1 <- data.frame(ID = 1:3, Rating = c(3.4, 4.5, 2.1)) 
df2 <- data.frame(M = c("M1", "M2", "M3", "M4"), Rating = c(3.4, 2.9, 4.7, 5.0)) 
answer <- outer(df1$Rating, df2$Rating, "+") 
answer <- answer -1 
colnames(answer) <- df2$M 
rownames(answer) <- df1$ID 
answer 
Смежные вопросы