![](/img/trans.png)
[英]change all values in the dataframe for all the columns except for a particular column using R
[英]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.