Sql 条件更新值
我在R中有一个名为dfData的数据帧,如下所示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,
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分
#定义要替换的值对
ax您只需要一次更换吗?或者还有更多的值需要更改吗?根据您的描述,您不需要多个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