作为对该问题的扩展,我在以下链接中发布了
Issue with pasting 5 columns groups in R
我现在有一个如下表。
Table:
V29 V30 V31 V32 V33 V34 V35 V36 V37 V38
044 N 006 E 011 044 N 006 E 012
045 N 007 E 028 NA NA NA NA NA
我想获得下表,每行粘贴5个列组。但是,粘贴时请删除NA列。
Output:
V29 V30 V31 V32 V33 V34 V35 V36 V37 V38 output
044 N 006 E 011 044 N 006 E 012 044N006E011-044N006E012
045 N 007 E 028 NA NA NA NA NA 045N007E028
非常感谢您的帮助。
谢谢。
答案 0 :(得分:0)
假设您的所有列均为character
类型,则假设每行的前5列中始终至少有一个值,并假设您已调用data.frame
“ {{1} }”以下代码应该可以解决问题:
df
答案 1 :(得分:0)
df = read.table(
text = "
V29 V30 V31 V32 V33 V34 V35 V36 V37 V38
044 N 006 E 011 044 N 006 E 012
045 N 007 E 028 NA NA NA NA NA",
header = T
)
grp = c(rep(1, 5), rep(2, 5))
apply(df, 1, function(x)
{
z=sapply(split(unlist(x), grp), function(y)
{
if (is.na(y[1]))
""
else
paste0(trimws(y), collapse = "")
})
if(z[2]=="")
paste0(z, collapse = "")
else
paste0(z, collapse = "-")
})