【问题标题】:List of dataframes - extracting a row from each dataframe数据帧列表 - 从每个数据帧中提取一行
【发布时间】:2018-05-27 19:28:59
【问题描述】:

我有一个通过导入 excel 文件创建的数据框列表,这些文件没有唯一的结构,例如:

有时我在单元格A8 中有一个标签"Contact",有时在A9 中。但它总是被标记为"Contact"

如果联系人处于固定位置,我知道如何提取"Contact",例如A9。在那种情况下,我会写这段代码:

lapply(test,"[",9,1,drop=FALSE)

我应该如何更改代码以动态查找标签 "Contact" 出现在每个数据帧中的哪一行?

谢谢!

我知道我不够清楚。好的,这是我列表中许多 2 DF 的图片。您可以看到“公司名称”值位于第一个 DF 的第 8 行和第二个 DF 的第 10 行。如何使用此函数 lapply(test,"[",9,1,drop=FALSE) 动态获取行?

Example of my data

【问题讨论】:

  • 您不能将包含“联系人”一词的列(可能是第一列)定义为数据框的行名吗?然后你可以通过“test[“Contact”,]”访问该行。

标签: r excel list dataframe lapply


【解决方案1】:

我认为您应该使用which() 来查找带有目标字符串的行,如下所示:

df <- data.frame(cont = c(rep("Some data",7),"Contact",rep("Some data",2)), val = 1:10, stringsAsFactors = F)
df[which(df$cont == "Contact"),]

【讨论】:

    【解决方案2】:

    假设 test 是您的数据框,字符串 "Contact" 位于第一列和未知行中。 然后您可以将第一列定义为数据框的行名。

    test <- data.frame(names=c("contact","other"), x=c(1,2), y=c(3,4))
    rownames(test) <- test[,1]
    

    并通过

    访问相关行
    test["contact",]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多