簡體   English   中英

根據另一變量以差異方式替換一列中的變量

[英]Replace variable in one column differentially based on another variable

我在一個數據庫中有一列是變量,在另一列中有相應的索引值。 我想用另一組數據替換index變量,但是要基於第一列中的變量。

Col1 Col2 

A    1
A    2
A    3
A    4
B    1
B    2
B    3
B    4
C    1
C    2
C    3
C    4

我想用取決於Col1值的向量替換1到4的值。

If A: replace c(1:4) with c(10, 5, 2, 4)
If B: replace c(1:4) with c(20, 19, 8, 5)
IF C: replace c(1:4) with c(30, 25, 20, 17)

這是我以前在不依賴於另一列的列中執行此操作的代碼,但是我無法使其與當前情況一起使用:

col
1
2
3
4

index <- c(1:4)
foo <- c(4,5,6,8)
df$col <-  foo[match(df$col, index)]

col
4
5
6
8

嘗試使用data.table

library(data.table)
dt <- data.table(Col1 = c(rep("A", 4), rep("B", 4), rep("C", 4)),
                 Col2 = c(1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4))

A <- c(10, 5, 2, 4)
B <- c(20, 19, 8, 5)
C <- c(30, 25, 20, 17)

dt[Col1 == "A", Col2 := A]
dt[Col1 == "B", Col2 := B]
dt[Col1 == "C", Col2 := C]

print(dt)
    Col1 Col2
 1:    A   10
 2:    A    5
 3:    A    2
 4:    A    4
 5:    B   20
 6:    B   19
 7:    B    8
 8:    B    5
 9:    C   30
10:    C   25
11:    C   20
12:    C   17

如果您需要將結果作為data.frame ,則始終可以通過以下方式有效地切換回

setDF(dt)

無需復制。

暫無
暫無

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

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