【发布时间】:2019-03-20 10:54:48
【问题描述】:
如果有一个数据框,其列的模式为:一行带有一个带有名称的字符串,然后是其他包含名称和数字序列的行。这在整个数据帧中重复。
我想创建一个新列,条件是如果它发现一行的字符串以单词“CANTON”开头(并且没有数字),复制没有第一个单词(CANTON)的字符串通过所有新列的下一行,直到出现另一行,其中包含以单词“CANTON”开头的字符串,它必须采用新字符串,并将新的最后一个单词复制到新列中。
数据框的一个例子是下一个:
datos <- data.frame(sitio = c("CANTON SAN JOSE", "01 Carmen", "02 Merced",
"03 Hospital", "04 Catedral", "05 San Franscisco",
"CANTON ESCAZU", "01 Escazu", "02 San Antonio", "03 San Rafael" ),
area = c(44.62, 1.49, 2.29, 3.38, 2.31, 2.85, 34.49, 4.38,
16.99, 13.22))
datos
预期的结果是:
expected_result <-data.frame(
sitio = c("CANTON SAN JOSE", "01 Carmen", "02 Merced",
"03 Hospital", "04 Catedral", "05 San Franscisco",
"CANTON ESCAZU", "01 Escazu", "02 San Antonio",
"03 San Rafael" ),
area = c(44.62, 1.49, 2.29, 3.38, 2.31, 2.85, 34.49, 4.38,
16.99, 13.22),
canton = c("SAN JOSE", "SAN JOSE", "SAN JOSE", "SAN JOSE",
"SAN JOSE", "SAN JOSE", "ESCAZU", "ESCAZU", "ESCAZU",
"ESCAZU"))
我尝试了很多 for 循环、子集和连接数据帧,但都没有成功。我无法在 R 的指令中阐明这种模式。
感谢您的帮助!
【问题讨论】:
标签: r conditional-statements dplyr