【问题标题】:data.frame of characters to vector字符的数据帧到向量
【发布时间】:2023-01-03 09:47:29
【问题描述】:

我有一个包含 X 列的 data.frame(我将在这个例子中使用三个):

data<- data.frame('col1'=c('gama','zeta','omega'),'col2'=c('square','circle','triangle'),'col3'=c('bike','car','airplane'))

我想“求和”这个 data.frame 的每一行的值,在它们上面放置一个分隔符,这些值是字符。我想在不使用 for 循环的情况下执行此操作(因为我的真实 data.frame 非常大)。

the question drawing

“粘贴”功能需要多个向量作为输入(当输入是字符列表时,输出是错误的),但真实数据帧的“ncol”(列数)会一直变化(是动态生成的数据.框架)。

我不知道如何使用“粘贴”或“stringr::str_c”函数来执行此操作,但我尝试了它们,但都返回了格式错误的唯一向量。 并且“rowSums”函数只接受数字(不接受分隔符,但我可以处理这个)。

【问题讨论】:

  • 图像“问题图”中的右侧是字符向量,长度= 3
  • 我相信你正在寻找这个:data$new_col = apply(data, 1, paste0, collapse=", ")
  • 它有效,但由于我的 data.frame 稍后很大,我将看到“应用”函数的速度有多快,正如我所说的“我避免 for 循环,因为数据的大小有时会超过 50000 行。

标签: r dataframe type-conversion dataset character


【解决方案1】:

您可以使用 apply 在每一行上应用 paste0 函数,并利用 collapse 参数:

data$new_col = apply(data, 1, paste0, collapse=", ")

输出:

   col1     col2     col3                   new_col
1  gama   square     bike        gama, square, bike
2  zeta   circle      car         zeta, circle, car
3 omega triangle airplane omega, triangle, airplane

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    相关资源
    最近更新 更多