Sql 条件更新值

Sql 条件更新值,sql,r,Sql,R,我在R中有一个名为dfData的数据帧,如下所示 x y 10 A 20 B 30 C 40 D 我正在努力实现以下目标: 如果X中的值为10,则将该值更新为“XYZ” 在R中有没有一种功能或优雅的方式来实现这一点?试图避免多个ifelse语句 谢谢如果您需要根据x值替换许多y值,一种可行的方法是: # define df as data.table library(data.table) df <- data.table(x=c(10,20,30,40,50,60,70,

我在R中有一个名为dfData的数据帧,如下所示

x   y 
10  A
20  B
30  C
40  D
我正在努力实现以下目标:

如果X中的值为10,则将该值更新为“XYZ”

在R中有没有一种功能或优雅的方式来实现这一点?试图避免多个ifelse语句


谢谢

如果您需要根据x值替换许多y值,一种可行的方法是:

# define df as data.table
library(data.table)
df <- data.table(x=c(10,20,30,40,50,60,70,80,90), y= c('A', 'B', 'C', 'D','A', 'B', 'C', 'D', 'A'))

> df
    x y
1: 10 A
2: 20 B
3: 30 C
4: 40 D
5: 50 A
6: 60 B
7: 70 C
8: 80 D
9: 90 A

# define your pair of values for replacement
a <- c(10,20,50)
b <- c('XYZ', 'ZYX', 'AAA')

# x = 10 will cause y to be replaced by 'XYZ', x= 20 will cause y to be replaced by 'ZYX' and so on ...

# replacement 

for (i in 1:length(a)) {
  df[ x==a[i], y := b[i]]
}

> df
    x   y
1: 10 XYZ
2: 20 ZYX
3: 30   C
4: 40   D
5: 50 AAA
6: 60   B
7: 70   C
8: 80   D
9: 90   A
#将df定义为data.table
库(数据表)
df-df
xy
上午1时10分
2:20 B
3:30摄氏度
4点40分
上午5点50分
6:60 B
7:70摄氏度
8时80分
上午9时90分
#定义要替换的值对

a
x您只需要一次更换吗?或者还有更多的值需要更改吗?根据您的描述,您不需要多个if-else。就一个。否则,您可以使用
replace
,因为在使用data.table时有
DT[x==10,y:=“XYZ”]
。或者,是的,
replace
也不错:
transform(DF,y=replace(y,x==10,“XYZ”)
之类的。如果要有条件地分配更多值,则会有一个“更新联接”与data.table。。。不过,您需要发布一个更完整的示例。@docendo有几个值我想更改。。为什么这个值被标记为SQL?谢谢,但在我的情况下,它与我想更新的值相同……我基本上希望10成为xyz。
x <- c(10,20,30,40)

y <- c("a", "b", "c", "d")

df1 <- data.frame(x,y)


df1$y <- as.character(df1$y)

Now we get the data frame as you want:

> df1
   x y
1 10 a
2 20 b
3 30 c
4 40 d

> df1[which(df1$x==10),2] <- 'xyz'

This produces:

> df1
   x   y
1 10 xyz
2 20   b
3 30   c
4 40   d