Объединение столбцов и объединение содержимого - PullRequest
0 голосов
/ 28 апреля 2018

Я хочу объединить два столбца и добавить их содержимое вместе, например

X1  X2
3   5
6   9
3   3
0   6
NA  4
NA  NA

для создания

X3
8
15
6
6
4
NA

Любой признак будет принята с благодарностью?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

rowSums есть для таких случаев. Если data.frame получил более 2 столбцов, то df следует заменить на df[c("X1","X2")] в приведенном ниже решении.

Если OP хочет, чтобы в последней строке было NA, то решение может быть следующим:

df$X3 <- ifelse(rowSums(is.na(df)) == ncol(df), NA, rowSums(df, na.rm = TRUE))

df
#    X1 X2 X3
# 1  3  5  8
# 2  6  9 15
# 3  3  3  6
# 4  0  6  6
# 5 NA  4  4
# 6 NA NA NA

Если последняя строка (со всеми NA) ожидаемой суммой равна 0, тогда простой rowSums будет работать как:

df$X3 <- rowSums(df, na.rm = TRUE)

df
#    X1 X2 X3
# 1  3  5  8
# 2  6  9 15
# 3  3  3  6
# 4  0  6  6
# 5 NA  4  4
# 6 NA NA  0

Данные:

df <- read.table(text = 
"X1  X2
3   5
6   9
3   3
0   6
NA  4
NA  NA",
header = TRUE)
0 голосов
/ 28 апреля 2018

В базе R вы можете сделать:

X3 <- X1 + X2

Но это вернет NA, где у вас есть один NA. Если вы хотите игнорировать NA и вернуть значение 4 при добавлении NA и 4, вы должны сделать:

X3 <- sum(X1, X2, na.rm = TRUE)

В синтаксисе dplyr вы можете сделать:

df %>% mutate(X3 = X1 + X2)

То есть, предполагая, что X1 и X2 - это два отдельных столбца в df.

Базовое решение R будет работать на отдельных векторах, даже если не в одном df.

...