Как я могу создать новый столбец на основе блоков строк, разделенных пробелами? - PullRequest
0 голосов
/ 01 мая 2020

У меня есть набор данных с одним из столбцов, таких как:

df <- data.frame(name = c("E11","E11","E17","","E12","E11","","E17","","E11",""))

Таким образом, он имеет блоки различной длины, разделенные на пустые ячейки, упорядоченные по размеру этих блоков. Итак, я хотел создать новый столбец (мутировать) на основе этого. Итак, из этого исходного набора данных я хотел создать df, подобный этому:

+-------------+--------------+
|    name     |     clone    |
+----------------------------+
|     E11     |     cl_1     |
+----------------------------+
|     E11     |     cl_1     |
+----------------------------+
|     E17     |     cl_1     |
+----------------------------+
|             |              |
+----------------------------+
|     E12     |     cl_2     |
+----------------------------+
|     E11     |     cl_2     |
+----------------------------+
|             |              |
+----------------------------+
|     E17     |     cl_3     |
+----------------------------+
|             |              |
+----------------------------+
|     E11     |     cl_4     |
+-------------+--------------+ 

1 Ответ

0 голосов
/ 01 мая 2020

Не самое элегантное решение, но оно работает:

tmp <- ifelse(df$name=="",1,0)
tmp[1 ]<-  1
tmp <- cumsum(tmp)

df$clone <- ifelse(df$name=="",  "", paste0("cl_", tmp) )
df
   name clone
1   E11  cl_1
2   E11  cl_1
3   E17  cl_1
4            
5   E12  cl_2
6   E11  cl_2
7            
8   E17  cl_3
9            
10  E11  cl_4
11
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...