【发布时间】:2020-11-12 14:05:50
【问题描述】:
注意,对 R 来说很新 - 但我真的很想在 R 而不是 java 中执行此操作。
我的 csv 文件(2020 年瑞典物种红名单)如下所示:
id,svenskt,latin,Organismgrupp,Kategori,Observationer,Landskapstyp,status_abbrev,Rodlistekriterium
249012,,Abia candens,stekel,Art,3,"Jordbrukslandskap (J) - Stor betydelse, Skog (S) - Har betydelse",DD,
249014,,Abia lonicerae,stekel,Art,2,Skog (S) - Stor betydelse,DD,
261452,,Abia nitens,stekel,Art,0,Jordbrukslandskap (J) - Stor betydelse,DD,
- 可以通过点击“skapa csv-fil”按钮从SLU 下载整个 csv 文件。
对我来说有趣的列只有“id”和“status_abbrev”列。 我想使用这些列来更新我的数据库表,做这样的事情:
sql<- paste("update redlist SET status_abbrev='",abbrev,"' ","where id=",id,sep="")
使用此命令读取 csv 文件:
library(dplyr)
redlist <- read.csv("rodlistade_arter_tampered_2.csv",header=TRUE);
dat <- select(redlist,'id', 'status_abbrev')
前 3 行的输出将是:
-
redlist是一个数据框,包含带有标题的 csv。 -
dat是一个数据框,包含红名单的一个子集(id 和 status_abbrev)。
但是哪个库最适合遍历“dat”数据框以创建类似的东西? 迭代并挑选 abbrev 和 id 并为每一行 创建以下字符串 - (最后我想将这些字符串写入 sql-batch 文件并更新粗糙的 5660 记录)
sql<- paste("update redlist SET status_abbrev='",abbrev,"' ","where id=",id,sep="")
所以我的结果字符串会是这样的(然后遍历整个文件):
update redlist SET status_abbrev=DD where id=249012
screenshot of redlist 和 dat -
最好的,我
【问题讨论】:
-
我不明白你的问题,但你所拥有的,基本上就是要这样做......在R中一切都是向量,所以你不必使用循环来做同样的操作在每一行。
-
你能举一个前三行输出的例子吗?
-
您是否在询问使用哪个库来更新数据库记录?如果是这样,这在 SO 上是题外话。
-
@RonakShah,不,事实并非如此——如果你通读我的问题,我想创建一个字符串——在 java 中做类似的事情很容易
-
@Elin ,那么我该如何创建这个字符串 -> 更新 redlist SET status_abbrev=DD where id=249012 ,然后对我的 redlist 中的所有 id 重复此操作?