如何在R数据帧中缩放列的段?
我有一个带有数值和类别的数据框。我需要缩放数值,但只针对其自身类别的观察值(希望不会将数据帧分割成碎片,然后使用rbind将其缝合) 以下是一个例子:如何在R数据帧中缩放列的段?,r,dataframe,scale,R,Dataframe,Scale,我有一个带有数值和类别的数据框。我需要缩放数值,但只针对其自身类别的观察值(希望不会将数据帧分割成碎片,然后使用rbind将其缝合) 以下是一个例子: df <- data.frame(x = c(1, 2, 3, 4, 5, 20, 22, 24, 25, 27, 12, 13, 12, 15, 17), y = c("A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "C", "C", "C", "C",
df <- data.frame(x = c(1, 2, 3, 4, 5, 20, 22, 24, 25, 27, 12, 13, 12, 15, 17),
y = c("A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "C", "C", "C", "C", "C"))
df按组应用相同的功能(scale
)
在R底
df$z <- with(df, ave(x, y, FUN = scale))
df
# x y z
#1 1 A -1.26491
#2 2 A -0.63246
#3 3 A 0.00000
#4 4 A 0.63246
#5 5 A 1.26491
#6 20 B -1.33242
#7 22 B -0.59219
#8 24 B 0.14805
#9 25 B 0.51816
#10 27 B 1.25840
#11 12 C -0.83028
#12 13 C -0.36901
#13 12 C -0.83028
#14 15 C 0.55352
#15 17 C 1.47605
或数据表
library(data.table)
setDT(df)[, z:= scale(x), y]
按组应用相同的功能(缩放
)
在R底
df$z <- with(df, ave(x, y, FUN = scale))
df
# x y z
#1 1 A -1.26491
#2 2 A -0.63246
#3 3 A 0.00000
#4 4 A 0.63246
#5 5 A 1.26491
#6 20 B -1.33242
#7 22 B -0.59219
#8 24 B 0.14805
#9 25 B 0.51816
#10 27 B 1.25840
#11 12 C -0.83028
#12 13 C -0.36901
#13 12 C -0.83028
#14 15 C 0.55352
#15 17 C 1.47605
或数据表
library(data.table)
setDT(df)[, z:= scale(x), y]