Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中转换数据帧的格式_R_Dataframe - Fatal编程技术网

在R中转换数据帧的格式

在R中转换数据帧的格式,r,dataframe,R,Dataframe,我是这个论坛的新手,很抱歉有任何问题。。。我有以下格式的数据框架(物质分类): A. B C D 1. 有机化合物 苯环型化合物 苯 NA 2. 有机化合物 苯环型化合物 苯 NA 3. 有机化合物 有机氧化合物 NA NA 4. NA NA NA NA 5. 有机化合物 苯环型化合物 NA NA 库(dplyr) df$class这是否有效: library(dplyr) library(string) df %>% mutate(across(everything(),~ replac

我是这个论坛的新手,很抱歉有任何问题。。。我有以下格式的数据框架(物质分类):

A. B C D 1. 有机化合物 苯环型化合物 苯 NA 2. 有机化合物 苯环型化合物 苯 NA 3. 有机化合物 有机氧化合物 NA NA 4. NA NA NA NA 5. 有机化合物 苯环型化合物 NA NA
库(dplyr)
df$class这是否有效:

library(dplyr)
library(string)
df %>% mutate(across(everything(),~ replace_na(., ''))) %>% 
   mutate(class = trimws(paste(A,B,C,D, sep = ';'),whitespace = "''"), class = str_remove(class, ';+$')) %>% 
   count(class, name = 'count') %>% filter(!str_detect(class,'^$'))
# A tibble: 3 x 2
  class                                      count
  <chr>                                      <int>
1 Organic compounds;Benzenoids                   1
2 Organic compounds;Benzenoids;Benzene           2
3 Organic compounds;Organic oxygen compounds     1
库(dplyr)
库(字符串)
df%>%变异(跨越(所有事物(),~replace_na(,''))%>%
mutate(class=trimws(粘贴(A,B,C,D,sep=“;”),whitespace=“”),class=str_remove(class,;+$))%>%
计数(类,名称='count')%>%过滤器(!str_detect(类,^$))
#一个tibble:3x2
班级人数
1有机化合物;苯类化合物1
2有机化合物;苯类化合物;苯2
3有机化合物;有机氧化合物1

看一看谢谢你的帮助!@Ashish Baid的解决方案对我来说更容易理解。
library(dplyr)
library(string)
df %>% mutate(across(everything(),~ replace_na(., ''))) %>% 
   mutate(class = trimws(paste(A,B,C,D, sep = ';'),whitespace = "''"), class = str_remove(class, ';+$')) %>% 
   count(class, name = 'count') %>% filter(!str_detect(class,'^$'))
# A tibble: 3 x 2
  class                                      count
  <chr>                                      <int>
1 Organic compounds;Benzenoids                   1
2 Organic compounds;Benzenoids;Benzene           2
3 Organic compounds;Organic oxygen compounds     1