2016-04-08 2 views
1

Моя dataframe, D вот так.Присвоить значения матрице с индексом другого фрейма данных

D$fit имеет как расстояние (0: 6) и дг (1: 3) Информация

D <- read.table(header = TRUE, text = " 
    distance dg fit 
1   0 1 A 
2   1 1 B 
3   2 1 C 
4   3 1 D 
5   4 1 E 
6   5 1 F 
7   6 1 G 
8   0 2 H 
9   1 2 I 
10  2 2 J 
11  3 2 K 
12  4 2 L 
13  5 2 M 
14  0 3 O 
15  1 3 P 
16  2 3 Q 
17  3 3 R 
") 

Я хочу, чтобы присвоить прилегание значения этой матрицы, md, что соответствует расстоянию и дг.

md <- matrix(1:21, nrow = 7) 
colnames(md) <- c(1:3) 
rownames(md) <- c(0:6) 
md[] <- NA 

    1 2 3 
0 NA NA NA 
1 NA NA NA 
2 NA NA NA 
3 NA NA NA 
4 NA NA NA 
5 NA NA NA 
6 NA NA NA 

Я пытался, но не смог с этим кодом

cmd = expand.grid(i=seq(0,6), j = seq(1,3)) 
i <- seq(0,6) 
j <- seq(1,3) 
md[i,j] <- D$fit[D$distance == cmd[1] & D$dg == cmd[2]] 
+2

Я не думаю, что вам нужно заполнить таблицу - вы могли бы просто сделать это за один раз - с помощью (D, tapply (fit, list (distance, dg), FUN = as.character)) ' – thelatemail

+0

Да! Он работает .. Спасибо ~ –

ответ

0

Мы можем использовать acast из library(reshape2)

library(reshape2) 
acast(D, distance~dg, value.var="fit") 

Или с reshape из base R

reshape(D, idvar="distance", timevar="dg", direction="wide") 

 Смежные вопросы

  • Нет связанных вопросов^_^