У меня есть матрица M, состоящая из имен столбцов из фрейма данных с одной строкой, так что каждое имя столбца имеет только одно соответствующее значение в фрейме данных. Есть ли функция для создания новой матрицы с соответствующими значениями из имен столбцов в M?
M <- t(data.frame(A=c("label_1","label_2","label_3"),
B=c("label_4","label_5","label_6"),
C=c("label_7","label_8","label_9")))
M
> [,1] [,2] [,3]
A "label_1" "label_2" "label_3"
B "label_4" "label_5" "label_6"
C "label_7" "label_8" "label_9"
df <- data.frame(label_2=5, label_1=0, label_4=7,
label_6=15, label_3=12, label_5=11,
label_9=9, label_8=15, label_7=35)
df
> label_2 label_1 label_4 label_6 label_3 label_5 label_9 label_8 label_7
1 5 0 7 15 12 11 9 15 35
## I want to create a new data.frame with the values from these labels
> [,1] [,2] [,3]
A 0 5 12
B 7 11 15
C 35 15 9
Я знаю один из возможных способов — преобразовать фрейм данных df
в пару ключ-значение, где k = имена столбцов, а v = значения. Затем я мог бы получить значения, используя:
apply(M,2,function(x){df[df$k==x,"v"]})
Но это кажется слишком сложным для того, что должно быть простой операцией...
Кроме того, я бы предпочел не использовать какие-либо библиотеки за пределами dplyr
или tidyr
, чтобы свести к минимуму зависимости, необходимые в моем коде.
df[df[[k]]==x, v]
. Но я действительно не понимаю, что вы пытаетесь сделать. - person Rui Barradas   schedule 17.08.2019