создание одного нового фрейма данных с применением одной функции поверх существующего - PullRequest
1 голос
/ 05 октября 2011

Я пытаюсь создать новый фрейм данных, используя существующий с парами данных

TargetID    A1           A2           B1      B2     
cg00000108 0.94483140 0.959417300 0.94427000 0.956393400 
cg00000292 0.83331720 0.836168900 0.75568530 0.869691000 
cg00001594 0.00000000 0.009319287 0.00318779 0.001852309 
cg00003298 0.01775547 0.034981820 0.03380106 0.116663900 
cg00003345 0.55442110 0.542106600 0.54762020 0.624028200 
cg00004055 0.10287610 0.107147500 0.09293073 0.106663000

Идея состоит в том, чтобы получить один фрейм данных с результатами вычитания между парами, чтобы получить, наконец, три последних столбца

TargetID A1-A2 B1-B2

Я пытался нас подать, но у меня недостаточно навыков программирования на R, чтобы понять, как сказать функции, с чего начинать вычитание

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 05 октября 2011

Как насчет просто:

with(d, data.frame(TargetID, A1-A2, B1-B2))

, где d - ваш фрейм данных.

0 голосов
/ 05 октября 2011

Вот подход, использующий возможности индексирования R и векторизованные операции. Создайте две последовательности индексов, которые соответствуют столбцам, которые вы хотите вычесть. Вот пример:

#5 row by 10 column matrix
m <- matrix(rnorm(50), ncol = 10)

#sequence one for columns 1,3,5,7,9
s1 <- seq(1,ncol(m),2)
#sequence two for columns 2,4,6,8,10
s2 <- seq(2,ncol(m),2)

#Create new matrix
m2 <- m[, s1] - m[, s2]

#apply some column names
colnames(m2) <- paste("x", s1, s2, sep = "_")

Только что понял, что ранее здесь задавал почти идентичный вопрос: Работа с несколькими столбцами одновременно

...