R 如何适当地合并表和格式?

R 如何适当地合并表和格式?,r,R,因此,我在cityzone.txt中有以下内容: "earth/city/somerset/forest/somerset-test.txt#53497", "earth/city/nottingham/forest/nighthill.txt#53498", "earth/city/bury/town/bishop-zone1.mp3#53695", 以及areasize.txt中的以下内容: planet\mars\red\cra

因此,我在cityzone.txt中有以下内容:

"earth/city/somerset/forest/somerset-test.txt#53497",
"earth/city/nottingham/forest/nighthill.txt#53498",
"earth/city/bury/town/bishop-zone1.mp3#53695",
以及areasize.txt中的以下内容:

planet\mars\red\crater.txt;56,
pluto\distant\dwarfmoon.txt;181,
mars\hot\red\redmoon.txt;43,
earth\city\somerset\forest\somerset-test.txt;205,
earth\city\bury\town\bishop-zone1.mp3;499,
所以我需要的是创建一个新表并将其写入输出文件

应该发生的是-对于cityzone.txt中的每一行,应该在areasize.txt中查找该行的标题。如果标题存在,则areasize.txt中的areasize编号应添加到CityOne行,如下所示:

"title#id#areasize",
使用引号和逗号

因此,对于上面的cityzones.txt,输出应为:

"earth/city/somerset/forest/somerset-test.txt#53497#205",
"earth/city/bury/town/bishop-zone1.mp3#53695#499",
然后它应该输出到一个带有引号和逗号的文件中,如图所示

因此,由于areasize.txt中仅存在3行中的2行,因此结果中仅包含3行cityzone.txt中的2行

我的起始代码实际上是这个问题的延续:

因此,我将把这个问题的代码添加到这个问题的代码中

谢谢。

您可以:

library(dplyr)
library(tidyr)

#Read the text files and keep only 1st column
cityzone <- read.table('cityzone.txt')[1]
areasize <- read.table('areasize.txt', sep = ';')


#Separate columns on # and join
#Clean areasize dataframe
cityzone %>% separate(V1, c('V1', 'V2'), sep = '#') %>%
  inner_join(areasize %>% 
               mutate(V1 = gsub('\\\\', '/', V1), 
                      V2 = sub(',$', '', V2)), 
             by = 'V1') -> result

#Combine output in required format and write 
cat(sprintf('"%s#%s#%s",', result$V1, result$V2.x, result$V2.y), 
    file = 'output.lua', sep = '\n')
库(dplyr)
图书馆(tidyr)
#阅读文本文件,只保留第1列
城市通%
内部连接(面积大小%>%
突变(V1=gsub('\\\','/',V1),
V2=子(“,$”,“,”,V2)),
by='V1')->结果
#以所需格式合并输出并写入
cat(sprintf('%s#%s#%s“,”,结果$V1,结果$V2.x,结果$V2.y),
文件='output.lua',sep='\n')

该死,我很抱歉Ronak。您的代码不起作用,当我查看原因时,我注意到我输入的areasize.txt不正确。Areasize.txt没有引号,使用分号和反斜杠。输出文件应该有引号,并使用哈希符号和正斜杠(如我想要的输出所示)。很抱歉,这是我的错误。也许更新后的答案会对这些新数据有所帮助。它现在运行得很好,Ronak,再次感谢你。我能要求你对代码做一件额外的小事情吗?output.lua中的所有行都以“earth/”开头。因此,我并不需要每一行都以earth开头。如何使output.lua在每一行中都省略“earth”一词?例如,如果该行是“earth/city/somerset/forest/somerset test.txt”#53497#205“,那么它将变成“city/somerset/forest/somerset test.txt”#53497#“。您可以使用
result$V1