gpt4 book ai didi

r - 使用 SQLDF 的示例行

转载 作者:行者123 更新时间:2023-12-01 23:13:09 26 4
gpt4 key购买 nike

sqldf 有一个获取“X”行的限制选项。我们也可以使用 sqldf 做一个 'x%' 样本吗?

例如

> sqldf("select * from iris limit 3")

Loading required package: tcltk
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa

> sqldf("select * from iris sample 0.01")
Error in sqliteSendQuery(con, statement, bind.data) :
error in statement: near ".1": syntax error

是否有一些解决方法?

马尼什

最佳答案

这基本上是一个 SQL 问题。由于 sqldf 默认使用 SQLite(这不是绝对正确的,请参阅 ?sqldfdrv 的文档以获取更多详细信息),问题沸腾了一直到“如何在 SQLite 中以随机顺序选择行?”。可以在 this SO post 中找到一个简单的答案:

SELECT * FROM table ORDER BY RANDOM() LIMIT 1;

使用问题中的示例:

> sqldf("select * from iris order by RANDOM() limit 3")
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 6.3 3.3 4.7 1.6 versicolor
2 6.0 2.7 5.1 1.6 versicolor
3 5.0 2.0 3.5 1.0 versicolor

编辑:如果给出行的百分比而不是行的,则以下内容可用作 R 解决方案。可能存在纯 SQLite 解决方案。

percentage <- 0.02
mylimit <- round(nrow(iris) * percentage, 0)
sqldf(sprintf("select * from iris order by RANDOM() limit %d", mylimit))

关于r - 使用 SQLDF 的示例行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32375268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com