Как рассчитать разницу между столбцами, имеющими одинаковые имена столбцов в одном и том же кадре данных, используя R - PullRequest
0 голосов
/ 02 мая 2019

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

. Я попытался получить уникальные имена столбцов столбцов и сформировать их, вычтя столбцы, но преобразовав общий столбец Id в NA.

ffsub[[k]][[i-1]] <- sapply(unique(names(temp)),
            function(x) apply(temp[grep(x, names(temp))], 1, function(y) { y[1] - y[2] }))                  

также пытался;

ffsub[[k]][[i-1]] <- sapply(unique(names(temp)[2:21]), 
                     function(x) apply(temp[grep(x, names(temp)[2:21])], 1, 
                     function(y) if ( all(is.na(y)) ) {NA} else { y[1] - y[2] }))

Результатом должна быть разница между клоунами, имеющими одинаковые имена col в кадре данных.

1 Ответ

0 голосов
/ 03 мая 2019

Я пытался получить разницу столбцов с одинаковыми именами столбцов в разных списках.
Списки f1, f2;fsub - это список, в котором хранится результат разницы. temp - это список, в котором столбцы объединены из двух списков.
ID - это общий столбец из двух списков.
temp <- объединить (f1, f2, by = "ID") <br>fsub [[f1]] [[f2]] <- sapply (уникальные (имена (временные))), функция (x) применить (temp [grep (x, names (temp))], 1, function (y) if (all (is.na (y))) {NA} else {if (is.na (y [2])) {y[1]} else {y [1] - y [2]}})) <br> уникальные (names (temp) -> получение уникальных имен столбцов из объединенного списка
1 -> столбец 1 с идентификатором ID в обоих списках
if (all (is.na (y))) {NA} -> если все столбцы в списках, имеющие нулевые значения, заменяются на NA
Таким образом, я получил разницу между столбцами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...