条件逻辑应用于数据帧列表

时间:2019-09-09 14:54:03

标签: r dataframe

我有两个包含农业收入数据的数据框。一种格式如下:

n

第二个空数据框,格式为:

dataframe_1 <- read.table(
  text = "ID    2000   2001   2002   2003   2004
          Barley  180    143    434    232    656
          Wheat   764    667    667    554    121
          Oats    121    443    343    346    121",
  header = TRUE,
  check.names = FALSE
)

第一个数据帧包含大量不必要的信息,我想获取有用的数据并将其汇总在第二个表中。

我想编写一个函数来检查匹配的列标题和行名,并从第一个表中获取相应的值,然后将其放在第二个表中。

示例:如果两个表中的列均被命名为“ 2002”,行被命名为“ Wheat”,则将第二个表中的NA值替换为值667。

我一直在尝试使用嵌套的for循环:

dataframe_2 <- read.table(
  text = "ID    2000   2001   2002   2003   2004
          Barley  NA     NA     NA     NA     NA
          Wheat   NA     NA     NA     NA     NA
          Oats    NA     NA     NA     NA     NA",
  header = TRUE,
  check.names = FALSE
)

但是仅接收无法解决问题的无用错误消息,并且数据帧不变。一个例子是:

date_range <- c("2000", "2001", "2002", "2003", "2004")

for (y in rownames(dataframe_2)) {
  for (x in date_range) {
    dataframe_1[[x]][y] <- dataframe_2[[x]][y]
  }
}

2 个答案:

答案 0 :(得分:1)

我们可以通过一个简单的子集来实现此目的:

df1[df1$ID %in% df2$ID, names(df2)]

答案 1 :(得分:-1)

我建议将每种格式转换为长格式,然后将数据合并以从表1中提取与表2的类别/年份相匹配的数据。

[ DeptName: "AERONAUTICAL ENGINEERING",
Id: 1,
Name: "Jon",
Studentid: "190AE101",
Year: "III" ]