процентная разница между двумя столбцами данных (только числовые) - PullRequest
0 голосов
/ 25 августа 2018

У меня есть два кадра данных (df1 и df2), и я хочу вычесть только числовые столбцы между двумя кадрами данных [(df2-df1)/df2], определить процентную разницу и создать выходной кадр данных = df3, используя R. Нечисловые столбцы будет сохранен как таковой.

df1 и df2 имеют одинаковую структуру и одинаковые имена столбцов.

df1:

colA colB colC   ...   colZ
mean   10   20      stringA
count  30   50      stringB

df2:

colA colB colC   ...  colZ
mean    5   25     stringA
count  60   50     stringB

DF3:

colA  colB colC   ...   colZ
mean  -100   20      stringA
count   50    0      stringB

Я попробовал это и не сработало:

 df2[,2:3] = (df2[,2:3] - df1[,2:3])/df2[,2:3]

Может кто-нибудь помочь с этим?

1 Ответ

0 голосов
/ 25 августа 2018

Мы можем подставить числовые столбцы и затем выполнить операцию

num_cols <- c("colB", "colC")
df3 <- (df2[num_cols] - df1[num_cols])/df2[num_cols] * 100
df3

#  colB colC
#1 -100   20
#2   50    0

Чтобы получить другие нечисловые столбцы, мы можем использовать setdiff, а затем cbind

cbind(df1[setdiff(names(df1), num_cols)], df3)

#   colA    colZ colB colC
#1  mean stringA -100   20
#2 count stringB   50    0
...