簡體   English   中英

將所有列除以特定列,除了一個

[英]Divide all columns by particular column, except one

例如:我有 4 列的框架,我想將 A 列和 B 列除以 C,但我想要不變的列 ID

A   B   C   ID

4   8   23  1
5   12  325 2
6   23  56  3
73  234 21  4
23  23  213 5

我期望的結果是

     A           B      C   ID
0,173913043 0,347826087 1   1
0,015384615 0,036923077 1   2
0,107142857 0,410714286 1   3
3,476190476 11,14285714 1   4
0,107981221 0,107981221 1   5

或者沒有C列,沒關系

所以,我的代碼只給了我列 A 和 B 而沒有列“ID”

columns_to_divide <- c(1,2)
results <- results[,columns_to_divide ]/results[,3]

我們可以使用mutate ,它創建或更改列中的值。 across表示要改變 A 列和 B 列,然后我們可以定義一個函數來將這兩列除以 C。

library(dplyr)
dat %>% mutate(across(c(A, B), function(x) x/C))
            A           B   C ID
1: 0.17391304  0.34782609  23  1
2: 0.01538462  0.03692308 325  2
3: 0.10714286  0.41071429  56  3
4: 3.47619048 11.14285714  21  4
5: 0.10798122  0.10798122 213  5
div = c("A", "B")
div_by = "C"
DF[div] <- DF[div] / DF[[div_by]]

#            A           B   C
# 1 0.17391304  0.34782609  23
# 2 0.01538462  0.03692308 325
# 3 0.10714286  0.41071429  56
# 4 3.47619048 11.14285714  21 
# 5 0.10798122  0.10798122 213

數據

DF data.frame(
  A = c(4, 5, 6, 73, 23), B = c(8, 12, 23, 234, 23), C = c(23, 325, 56, 21, 213)
)

創建列

A <- c(4, 5, 6, 73, 23)
B <- c(8, 12, 23, 234, 23)
C <- c(23, 325, 56, 21, 213)
ID <- c(1, 2, 3, 4, 5)

添加到數據框

df = data.frame(A, B, C, ID)

除以打印

df$A <- df$A / df$C
df$B <- df$B / df$C
df$C <- df$C / df$C

print(df)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM