当前位置: 首页 > 知识库问答 >
问题:

跨列取消嵌套字符串组,但将它们保留在R中的原始行中

雷硕
2023-03-14

我正试图找到一种方法来取消跨列字符串组的嵌套,但将所有字符串保留在原始行中。以dplyr中的示例数据集starwars为例,因为它具有与my dataset相似的结构。

df <- dplyr::starwars %>%
  rowwise() %>%
  mutate(films = paste(films, collapse=', '),
         vehicles = paste(vehicles, collapse=', '),
         starships = paste(starships, collapse=', '))

我现在的想法是想出一个包装函数,也许我可以通过purrr按比例来实现。但是我糟糕的函数编写不起作用--也许我对dplyr引擎盖不太熟悉。

ungroup_string <- function(data, x){
  a <- rowwise(data)
  a %>% mutate(x = paste(x, collapse=','))
}

有什么方法可以跨多个列对字符串进行解组吗?

共有1个答案

闽朝
2023-03-14

您可以跨使用:

library(dplyr)

starwars %>%
  select(name, films, vehicles, starships) %>%
  rowwise() %>%
  mutate(across(c(films,vehicles, starships), toString))

#    name       films                                vehicles         starships                             
#   <chr>      <chr>                                <chr>            <chr>                                 
# 1 Luke Skyw… The Empire Strikes Back, Revenge of… "Snowspeeder, I… "X-wing, Imperial shuttle"            
# 2 C-3PO      The Empire Strikes Back, Attack of … ""               ""                                    
# 3 R2-D2      The Empire Strikes Back, Attack of … ""               ""                                    
# 4 Darth Vad… The Empire Strikes Back, Revenge of… ""               "TIE Advanced x1"                     
# 5 Leia Orga… The Empire Strikes Back, Revenge of… "Imperial Speed… ""                                    
# 6 Owen Lars  Attack of the Clones, Revenge of th… ""               ""                                    
# 7 Beru Whit… Attack of the Clones, Revenge of th… ""               ""                                    
# 8 R5-D4      A New Hope                           ""               ""                                    
# 9 Biggs Dar… A New Hope                           ""               "X-wing"                              
#10 Obi-Wan K… The Empire Strikes Back, Attack of … "Tribubble bong… "Jedi starfighter, Trade Federation c…
# … with 77 more rows

across接受整齐选择的变量。因此您不必逐一指定15列中的每一列。您可以通过位置1:15、范围col1:col15或其名称starts_with('col')中的某种模式来选择列名。

 类似资料:
  • 我对R相对较新。我有一个数据帧,其中有一列存储为列表。我的列包含 或如果它是空的。如何将它们简单地更改为和charth(0)的空字符串? 例如,

  • 我正在编写一个接收SQS队列对象的Lambda函数。SQS将json对象作为字符串值发送给SQS。 当我在Lambda中接收到请求时,AWS已经将其包装成一个新的JSON,由于JSON是一个字符串值,因此它将成为无效的JSON。 现在body.message不是有效的JSON。我尝试将它解析为一个原始值,比如如何使用Jackson在对象中包含原始JSON?但它总是抱怨,它在期待逗号分隔对象的地方找

  • 问题内容: 我正在Java中的一个需要嵌套字符串的项目中工作。 对于纯文本形式的输入字符串,如下所示: 这是“字符串”,这是“ \嵌套”字符串 结果必须为以下内容: 请注意 ,我希望保留序列。 我有以下方法: 而且我需要根据给定的规则从给定的参数中创建一个字符串数组,而不使用 Java Collection Framework 或其派生类。 我不确定如何解决这个问题。 可以做一个正则表达式来解决这

  • 问题内容: 假定两个Java String对象: 那么对于表达式的每个值是否都是真的 评估为? 那么,是否保留String的任何值的原始字符串长度? 问题答案: 令人惊讶它 不是 ! 来自toLowerCase的 Java文档 使用给定语言环境的规则将此String中的所有字符转换为小写。大小写映射基于Character类指定的Unicode标准版本。 由于案例映射并不总是1:1字符映射,因此生成

  • 问题内容: 我似乎在Hibernate中映射列表时遇到问题。在我们的项目中有一类用含有类与含有。 Hibernate 是否可以使用注释进行映射?我的意思是,因为它没有注释? 问候 问题答案: 用途: 资料来源: 7.2.3。基本类型和可嵌入对象的集合

  • 我有映射: 和一些文件: 等等。 我尝试进行查询: 未找到任何结果。如果我尝试将同一查询按字段与其他类型(不是字符串,也没有原始子字段)一起使用,它会起作用。我应该如何为这种情况编写查询?谢谢 P、 美国字段“FieldA”具有子字段raw,因为我需要同时分析和不分析此字段