【发布时间】:2022-11-21 14:50:52
【问题描述】:
我有一个看起来像这样的数据集:
id col1 col2 col3 col4
1 1 12 ABC Henry Alex 13 AB
2 2 123 12 David 344
3 3 John 567 Luke Huh8
4 4 123344567 abc 123 Paul 98
5 5 1345677. Sam 17df Tom
目标:对于每一行,我想获取不包含数值的每个单元格,并根据该行的现有值创建新列:
Name col1 col2 col3 col4
1 Henry 12 ABC <NA> <NA> 13 AB
2 Alex 12 ABC <NA> <NA> 13 AB
3 David 123 12 <NA> 344
4 John <NA> 567 <NA> Huh8
5 Luke <NA> 567 <NA> Huh8
6 Paul 123344567 abc 123 <NA> 98
7 Sam 1345677 <NA> 17df <NA>
8 Tom 1345677 <NA> 17df <NA>
基于这个问题的性质,我认为可以使用以下两个概念:
-
判断一列是否包含数值,可以使用如下代码:
grepl("\\d", my_data$col1) -
我认为某种形式的“pivot_wider”和“pivot_longer”可能适用,但我不确定具体如何执行此操作。
有人可以告诉我该怎么做吗?
数据
my_data <- structure(list(id = 1:5, col1 = c("12 ABC", "123", "John", "123344567",
"1345677."), col2 = c("Henry", "12", "567", "abc 123", "Sam"),
col3 = c("Alex", "David", "Luke", "Paul", "17df"), col4 = c("13 AB",
"344", "Huh8", "98", "Tom")), class = "data.frame", row.names = c(NA,
-5L))
【问题讨论】:
-
您是否总是只创建一个新专栏?
标签: r data-manipulation