【发布时间】:2022-01-14 17:49:36
【问题描述】:
我正在使用 R 编程语言。假设我有以下数据框:
age=18:29
height=c(76.1,77,78.1,78.2,78.8,79.7,79.9,81.1,81.2,81.8,82.8,83.5)
gender=c("M","F","M","M","F","F","M","M","F","M","F","M")
testframe = data.frame(age=age,height=height,height2=height,gender=gender,gender2=gender)
head(testframe)
age height height2 gender gender2
1 18 76.1 76.1 M M
2 19 77.0 77.0 F F
3 20 78.1 78.1 M M
4 21 78.2 78.2 M M
5 22 78.8 78.8 F F
6 23 79.7 79.7 F F
如果我想删除名称不同但值相同的列,可以使用以下代码行:
no_dup = testframe[!duplicated(as.list(testframe))]
head(no_dup)
age height gender
1 18 76.1 M
2 19 77.0 F
3 20 78.1 M
4 21 78.2 M
5 22 78.8 F
6 23 79.7 F
我的问题:假设数据框不在全局环境中——是否可以通过sqlQuery() 命令传递上述代码行?例如:
library(RODBC)
library(sqldf)
con = odbcConnect("some name", uid = "some id", pwd = "abc")
#not sure if this is correct?
sample_query = sqlQuery(con, "testframe[!duplicated(as.list(testframe))]")
有人可以告诉我怎么做吗?
谢谢!
【问题讨论】:
-
如果要更改数据库中的数据,请使用 SQL,而不是 R 代码。 R 可以将 SQL 命令传递给数据库,但仍然使用 SQL 进行编码。如果您只是想在将 R 对象从数据库中取出后更改它,则忽略 SQL 位。你想做什么?
-
@Michael Dewar:谢谢你的回复!我想做第一个:将SQL命令传递给数据库,但我不知道该怎么做。我知道如何在 R 中做到这一点(正如我在问题中所展示的那样) - 但我不知道如何通过 R 在 SQL 中做到这一点。你能告诉我如何做到这一点吗?谢谢!
标签: sql r duplicates odbc data-manipulation