Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
选择R sqldf包中除一列以外的所有列_Sql_R_Sqldf - Fatal编程技术网

选择R sqldf包中除一列以外的所有列

选择R sqldf包中除一列以外的所有列,sql,r,sqldf,Sql,R,Sqldf,在R中是否有方法使用sqldf包选择除一列以外的所有列?基于某个查询调用sqldf应该返回一个数据帧,其中每个DF列对应于SQL查询的select子句中出现的一列。考虑下面的例子: sql <- "SELECT * FROM yourTable WHERE <some conditions>" df <- sqldf(sql) drop <- c("some_column") df <- df[, !(names(df)

在R中是否有方法使用
sqldf
包选择除一列以外的所有列?

基于某个查询调用
sqldf
应该返回一个数据帧,其中每个DF列对应于SQL查询的select子句中出现的一列。考虑下面的例子:

sql <- "SELECT * FROM yourTable WHERE <some conditions>"
df <- sqldf(sql)
drop <- c("some_column")
df <- df[, !(names(df) %in% drop)]
sql1)SQLite使用默认的SQLite后端,假设我们希望返回
mtcars
中除
cyl
列之外的所有列的前3行。首先为所有此类列名创建一个逗号分隔的字符串,
sel
,然后使用
fn$sqldf
允许在SQL语句中将其作为
$sel
引用的字符串插值。如果要查看生成的SQL语句,请将
verbose=TRUE
参数添加到
sqldf

library(sqldf)

sel <- toString(setdiff(names(mtcars), "cyl"))
fn$sqldf("select $sel from mtcars limit 3")
2)H2H2后端支持
alter table。。。删除列…
,这样我们可以编写以下内容。由于
alter
不返回任何内容,因此我们添加了一个
select
,它返回修改后的表

library(RH2)
library(sqldf)

sqldf(c("alter table mtcars drop column cyl", 
        "select * from mtcars limit 3"))

请您提供示例数据
dput
,并对问题进行详细修改。因为
sqldf
用于汇总数据,为什么这类问题需要这些数据?这不是具体的数据问题,而是R包相关的问题。好的,谢谢。但是有什么方法可以避免在连接两个表之后出现双列呢?我的意思是,如果我有表
a
和表
b
,并且在最后一个表中使用相同的列
customer\u id
,我会看到两列具有相同名称
customer\u id
。下面是代码示例
data否,没有可靠的方法可以做到这一点,除非命名相同的两列碰巧也有相同的精确数据。在这种情况下,可以从R中任意保留这两列中的一列。但是,我不建议你沿着这条路走。一般来说,您应该始终明确列出您要选择的所有列。我已经回答了您最初的问题,您不应该在此处提出后续问题。但是如果问题是从您的回答中引出的,我认为这是提出其他问题的正确位置。无论如何,谢谢。无论如何,我认为这是回答这个附加问题的最好地方,因为它与同一主题相关——在SQL中选择数据时不包括列。
library(RH2)
library(sqldf)

sqldf(c("alter table mtcars drop column cyl", 
        "select * from mtcars limit 3"))