我正在处理一些数据并尝试创建一个新的数据框,其中包含可能是字典的键和值对。以下是一些示例数据和快速手动解决方案。
df = data.frame(col1 = c("one", "one", "two", "two", "one"),
col2 = c("AG", "AB", "AC", "AG", "AB"),
col3 = c("F3", "F1", "F2", "F3", "F2") )
df
d1 = data.frame(vals = unique(df$col1))
d2 = data.frame(vals = unique(df$col2))
d3 = data.frame(vals = unique(df$col3))
d1
d2
d3
d1$name = "col1"
d2$name = "col2"
d3$name = "col3"
d1
d2
d3
rbind(d1,d2,d3)
Run Code Online (Sandbox Code Playgroud)
当然,这是一个简单的用例,因此真实数据会更加普通。因此,我正在寻找一个可以遍历并在字典中设置键值对的循环。
我的大部分尝试都以失败告终。这是我的解决方案的格式,但我不确定如何动态创建 new_df 字典。有什么建议么?
new_df=data.frame()
prod.cols = c("col1", "col2", "col3")
for(col in prod.cols){
if(col %in% colnames(df)){
## solution in here
}
}
new_df
Run Code Online (Sandbox Code Playgroud)
tidyr让这变得容易:
library(tidyr)
df %>% gather(name, vals) %>% unique()
# name vals
# 1 col1 one
# 3 col1 two
# 6 col2 AG
# 7 col2 AB
# 8 col2 AC
# 11 col3 F3
# 12 col3 F1
# 13 col3 F2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4039 次 |
| 最近记录: |