【问题标题】:R - how to repeat sequence 1 to 522R - 如何重复序列 1 到 522
【发布时间】:2019-10-29 12:25:23
【问题描述】:

我有两个项目 ID 为 522 的文件,我想从第一个文件中提取它们。

以下代码可用于提取,但我不想手动重复 522 次 data$projectID==datid[x, ] |

data1 = data[(data$projectID==datid[1, ] |data$projectID==datid[2, ]|  ...| data$projectID==datid[522, ]), ]

如何将指令重复522次,每次加一。

谢谢!!

data = read.csv("~/Desktop/PACA SNA/PACA3.csv", header = TRUE, sep =";")

datid= read.csv("~/Desktop/PACA SNA/PACAID.csv", header = FALSE, sep =";")

data1 = data[(data$projectID==datid[1, ] | ...| data$projectID==datid[522, ]), ]

【问题讨论】:

  • 看看?merge
  • 您离提交stackoverflow.com/help/minimal-reproducible-example 不远了,这将大大增加获得好答案的机会。话虽这么说,我和@Sotos 在一起:如果可以,请尝试merge
  • 一般情况下,对于反模式x == a | x == b | ...,解决方案是x %in% c(a, b, ...)。在这种情况下,data1 = data[data$projectID %in% vector_of_ids]。如果datid 是向量,则vector_of_ids 必须是datid,或者如果datid 是一个数据框,则ID 位于名为"id_column" 的列中。

标签: r sequence series


【解决方案1】:

创建一个包含项目 ID 的向量。使用子集函数提取所需数据。

project.id <- as.vector(dataframe1$ID)
desired.data <- subset(dataframe2, dataframe2$ID %in% project.id)

【讨论】:

  • vector 将在此处导致错误。你的意思可能是as.vector,但这也应该是不必要的,project.id &lt;- dataframe1$ID 也应该这样做。 (当然,创建额外的对象是可选的,可以很容易地使用subset(dataframe2, ID %in% dataframe1$ID)
猜你喜欢
  • 2019-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
  • 2018-02-23
  • 2018-09-08
  • 2020-08-01
相关资源
最近更新 更多