将一列粘贴到数据框中的每个其他列

时间:2018-04-12 09:13:52

标签: r

我有一堆列,我需要将第一列粘贴到每个其他列中。除了实际的单词而不是字母之外,它看起来像这样,并且有几百列。

           TEST0     TEST1     TEST2     TEST3     TEST4
       1   Q1:       AA AA AA  AA AA AA            BB BB BB
       2   Q2:                                        
       3   Q3:       BB BB BB  CC CC CC  CC CC CC  CC CC CC 
       4   Q4:       DD DD DD            DD DD DD  DD DD DD

我能够将第一列一次粘贴到另一列中:

    paste(test[,2],test[,3])
   [1] "Q1: AA AA AA"  "Q2: "          "Q3: BB BB BB"  "Q4: DD DD DD "

    paste(test[,2],test[,4])
   [1] "Q1: AA AA AA " "Q2: "          "Q3: CC CC CC " "Q4: "    

但是有没有办法一次做多个列?感谢

3 个答案:

答案 0 :(得分:1)

以下是使用dplyr执行此操作的方法。首先创建自己的粘贴功能:

df <- data.frame(A = LETTERS, B = 1:26, C = 1:26)
head(df)

   A  B  C
1  A  1  1
2  B  2  2
3  C  3  3
4  D  4  4
5  E  5  5

pasteA <- function(., x) paste0(df$A,.)
df %>%
  mutate_if(.predicate = c(F, rep(T, ncol(df)-1)), .funs = list(pasteA))

   A   B   C
1  A  A1  A1
2  B  B2  B2
3  C  C3  C3
4  D  D4  D4
5  E  E5  E5

我们使用mutate_if使用逻辑向量选择除第一列之外的所有列。

答案 1 :(得分:0)

这是一个带<RegistryKey Root="HKLM" Key="Software\Apache Software Foundation\Procrun 2.0\$(var.serviceName)\Parameters" ForceDeleteOnUninstall="yes"> <RegistryValue Key="Java" Name="Classpath" Type="string" Value="[JettyHomeDirectory]start.jar"/> 循环的基础解决方案。对于每个目标列,Private Sub CommandButton1_Click() Dim SAPapplication, Connection, session As Object Set SAPGUIAuto = GetObject("SAPGUI") Set SAPapplication = SAPGUIAuto.GetScriptingEngine Set Connection = SAPapplication.Children(0) Set session = Connection.Children(0) session.findById("wnd[0]").maximize session.findById("wnd[0]").sendVKey 0 session.findById("wnd[0]/tbar[0]/okcd").Text = "******" session.findById("wnd[0]").sendVKey 0 它的第一列。

for

其中paste给出df <- data.frame(a = letters[1:5], b = 1:5, c = 5:1) for (i in 2:length(df)) { df[[i]] <- paste(df[[1]], df[[i]], sep = ": ") } 的列数。

结果:

length

答案 2 :(得分:0)

对于这种情况,{p> {dplyr}令人惊讶地复杂化。一个更简单的解决方案是使用lapply(因为data.frame是列的列表,所以有效):

as.data.frame(lapply(test[-1], function (x) paste(test[[1]], x)))