我有这类数据:

df <- data.frame(
  w1 = c("A", "B", "C", "E", "F", "G"),
  w2 = c("B", "G", "C", "D", "E", "V"),
  w3 = c("D", "S", "O", "F", NA, "N"),
  w4 = c("E", "U", NA, "T", NA, NA),
  w5 = c("C", NA, NA, NA, NA, NA)
)

我需要遍历column pairs,将单独的字符串滚动粘贴到bigram中.请注意,在实际数据中,字符串具有可变的字符长度和字符类型.

df[, paste0("bigr_", 1:4, "_", 2:5)] <- lapply(df[, 1:5], 
                                               function(x) paste(x[i], x[i+1], sep = " "))

expected output人是:

  w1 w2   w3   w4   w5 bigr_1_2 bigr_2_3 bigr_3_4 bigr_4_5
1  A  B    D    E    C      A B      B D      D E      E C
2  B  G    S    U <NA>      B G      G S      S U     <NA>
3  C  C    O <NA> <NA>      C C      C O     <NA>     <NA>
4  E  D    F    T <NA>      E D      D F      F T     <NA>
5  F  E <NA> <NA> <NA>      F E     <NA>     <NA>     <NA>
6  G  V    N <NA> <NA>      G V      V N     <NA>     <NA>

我最感兴趣的是dplyr种解决方案,但我对其他解决方案持开放态度,并表示感谢.

推荐答案

由于您对非dplyr解决方案持开放态度,我们可以在base R中修改您的原始代码:

df[, paste0("bigr_", 1:4, "_", 2:5)] <- mapply(paste, df[, 1:4], df[, 2:5])

# as NA is coerced to character, we need to find those positions and correct
x <- which(is.na(df[, 1:4]) | is.na(df[, 2:5]), arr.ind = TRUE)
x[, 2] <- x[, 2] + 5
df[x] <- NA
df

#   w1 w2   w3   w4   w5 bigr_1_2 bigr_2_3 bigr_3_4 bigr_4_5
# 1  A  B    D    E    C      A B      B D      D E      E C
# 2  B  G    S    U <NA>      B G      G S      S U     <NA>
# 3  C  C    O <NA> <NA>      C C      C O     <NA>     <NA>
# 4  E  D    F    T <NA>      E D      D F      F T     <NA>
# 5  F  E <NA> <NA> <NA>      F E     <NA>     <NA>     <NA>
# 6  G  V    N <NA> <NA>      G V      V N     <NA>     <NA>

R相关问答推荐

大规模重新标记haven标签数据

使用tidyverse方法绑定行并从一组管道列表执行左连接

是否可以创建一个ggplot与整洁判断的交互作用

制作等距离的线串副本

根据类别合并(汇总)某些行

合并后返回列表的数据帧列表

从圆到R中的多边形的标绘雷达图

基于Key->Value数据帧的基因子集相关性提取

如何平滑或忽略R中变量的微小变化?

将具有坐标列表列的三角形转换为多个多边形

解析嵌套程度极高的地理数据

将统计检验添加到GGPUBR中的盒图,在R

从线的交点创建面

随机 Select 的非NA列的行均数

使用LAG和dplyr执行计算,以便按行和按组迭代

如何修改GT表中组名行的 colored颜色 ?

将CSV转换为R中的自定义JSON格式

GgHighlight找不到它创建的列:`Highlight..1`->;`Highlight.....`

通过分析特定列中的字符串在数据框中创建新的行和列

如何在用`{{ }}`创建的变量上使用整洁 Select ?