r - 数据框中从长格式到宽格式
问题描述
我想更改数据框的格式。现在它是长格式,但我想将其更改为宽格式,以便每个sample
都有自己的列,根据cond
. 现在应该给1,缺席0。
In:
virus sample cond
1 virusA A Present
2 virusB A Present
3 virusC A Absent
4 virusA B Absent
5 virusB B Present
6 virusC B Present
df <- structure(list(virus = c("virusA", "virusB", "virusC", "virusA",
"virusB", "virusC"), sample = c("A", "A", "A", "B", "B", "B"),
cond = c("Present", "Present", "Absent", "Absent", "Present",
"Present")), class = "data.frame", row.names = c(NA, -6L))
Out:
> df.out
virus A B
1 virusA 1 0
2 virusB 1 1
3 virusC 0 1
解决方案
pivot_wider
与_values_fn
library(tidyr)
pivot_wider(df, names_from = sample, values_from = cond,
values_fn = list(cond = ~ sum(. == 'Present')))
-输出
# A tibble: 3 × 3
virus A B
<chr> <int> <int>
1 virusA 1 0
2 virusB 1 1
3 virusC 0 1
推荐阅读
- php - 我的逻辑有什么问题?尝试制作一个简单的mysqli脚本
- java - 以这种方式使用 Spring 规范谓词是否安全?
- python - 将自定义函数应用于熊猫数据框中的每个列组合
- tabulator - 在 Tabulator 表的每个嵌套数据树下添加总和
- c# - 如何在 C# 中按升序对多维数组进行排序?
- inspector - 如何在钴中使用检查器?
- python-3.x - python函数在尝试将日期时间字符串'12/20/2018 11:02:34:933'转换为日期时间对象时抛出错误
- angular - Angular 7 和 IIS 7:切换到开发环境时出错
- python - 捕获主目录中所有子文件夹中的所有 csv 文件 - Python 3.x
- javascript - JQuery 等于或包含字符串值不起作用