【问题标题】:splitting a string and extracting individual elements [closed]拆分字符串并提取单个元素[关闭]
【发布时间】:2016-01-19 10:02:22
【问题描述】:

第一个查询:

文件名是测试,它是一个数据框,向量只是一个包含诸如 Stacy-A、Mark-B、Giselle-C 之类的名称。 我想拆分一个名字,比如说 Stacy-A,我有超过 50000 行。 所以我想要一个包含 Stacy 的向量和一个包含 A 的向量,即拆分后的字符。我为此运行了一个循环。由于循环返回列表,我已经使用了它。

for(i in 1:nrow(TEST)){TEST[i,"Name"]<-strsplit(TEST[i,"Name"],"-")[[1]][1] 
  TEST[i,"Character"]<-strsplit(TEST[i,"Name"],"-")[[1]][2]}

这需要很多时间。 有人可以让我知道如何使用sapply 或任何应用函数,但我想要在数据框中而不是列表或矩阵中。

第二次查询:

Test 是我想要值的数据库,我还有一个名为 User 的文件,我想从中提取值。

我想进行类似 excel 的查找以从另一个文件中选择值。我的循环中有两个条件。 我找到匹配的值然后只有我选择它,如果有重复我只选择一个。我使用了这个循环。需要3个小时。我的用户文件中有数据框和 300000+ 行,我希望从中获取值。

for (i in 1:nrow(Test)){if(Test[i,"Item_Cd"] %in% User_item_no)
 {item_cd_found<-Test[i,"Item_Cd"]Test[i,"Order.Status"]<-as.character(User[which(User$Item.No.==item_cd_found),"Name"])[1]}

【问题讨论】:

标签: r loops sapply


【解决方案1】:

这可能是一个没有可重复示例的黑暗镜头,但您可能会追求这样的东西。首先,我将每个元素按- 拆分,然后取出第一个和第二个元素并将其分配给相应的变量。

xy <- c("Svarog-A", "Knez-B", "Petovia-C", "Svarun-D", "Hotimir-D")

splitxy <- strsplit(xy, "-")

xy.names <- sapply(splitxy, "[", 1)
xy.letters <- sapply(splitxy, "[", 2)

> xy.names
[1] "Svarog"  "Knez"    "Petovia" "Svarun"  "Hotimir"
> xy.letters
[1] "A" "B" "C" "D" "D"

【讨论】:

  • 并构建data.frame:data.frame(Name = xy.names, Letter = xy.letters)
  • 感谢 Roman,它成功了。我得到了第一个查询的答案
  • @AshishPatodia 我建议您为第二个查询打开第二个问题。如果可能,不要忘记提供reproducible example 和所需的输出。
  • @DavidArenburg 有很多方法可以给猫剥皮,我只是想我会给用户真正想要的东西。
  • 我会的。 :) 随意编辑我的答案。
猜你喜欢
  • 2013-01-02
  • 2016-03-08
  • 2016-09-20
  • 2021-08-06
  • 1970-01-01
  • 1970-01-01
  • 2014-12-25
  • 2021-10-22
  • 2020-09-06
相关资源
最近更新 更多