r - 在 reshape() 或 stack() 中重复列
问题描述
我有这个df
:
df = data.frame(Meaning = c('Tax', 'Internet', 'Tax', 'Phone', 'Tax', 'Car'),
Code = c(4656, 6152, 4656, 6150, 4656, 6151),
Total = c(0.73, 4.4, 1.33, 8, 1.67, 10),
Tax = c(0.73, NA, 1.33, NA, 1.67, NA),
Subtotal = c(NA, 3.67, NA, 6.67, NA, 8.33),
stringsAsFactors = FALSE)
> df
Meaning Code Total Tax Subtotal
Tax 4656 0.73 0.73 NA
Internet 6152 4.40 NA 3.67
Tax 4656 1.33 1.33 NA
Phone 6150 8.00 NA 6.67
Tax 4656 1.67 1.67 NA
Car 6151 10.00 NA 8.33
我想使用reshape()
或stack
获得另一个data.frame
看起来像这样的:
Code Meaning Category Price
6152 Internet Total 4.4
6152 Internet Subtotal 3.67
4656 Tax Subtotal 0.73
6150 Phone Total 8
6150 Phone Subtotal 6.67
4656 Tax Subtotal 1.33
6151 Car Total 10
6151 Car Subtotal 8.33
4656 Tax Subtotal 1.67
WhereCategory
显示来自df
(Total
或Subtotal
) 的列,并Price
以下列方式显示:Total
, Subtotal
,Tax
显示在df
.
到目前为止,我尝试过:
cbind(df[1:2], stack(lapply(df[-c(1:2)], as.character)))
但它检索:
Meaning Code values ind
Tax 4656 0.73 Total
Internet 6152 4.4 Total
Tax 4656 1.33 Total
Phone 6150 8 Total
Tax 4656 1.67 Total
Car 6151 10 Total
Tax 4656 0.73 Tax
Internet 6152 <NA> Tax
Tax 4656 1.33 Tax
Phone 6150 <NA> Tax
Tax 4656 1.67 Tax
Car 6151 <NA> Tax
Tax 4656 <NA> Subtotal
Internet 6152 3.67 Subtotal
Tax 4656 <NA> Subtotal
Phone 6150 6.67 Subtotal
Tax 4656 <NA> Subtotal
Car 6151 8.33 Subtotal
有任何想法吗?
解决方案
这看起来对吗?
library(tidyverse)
df %>%
gather(Total, Tax, Subtotal, key="key", value="value") %>%
arrange(Code)
Meaning Code key value
1 Tax 4656 Total 0.73
2 Tax 4656 Total 1.33
3 Tax 4656 Total 1.67
4 Tax 4656 Tax 0.73
5 Tax 4656 Tax 1.33
6 Tax 4656 Tax 1.67
7 Tax 4656 Subtotal NA
8 Tax 4656 Subtotal NA
9 Tax 4656 Subtotal NA
10 Phone 6150 Total 8.00
11 Phone 6150 Tax NA
12 Phone 6150 Subtotal 6.67
13 Car 6151 Total 10.00
14 Car 6151 Tax NA
15 Car 6151 Subtotal 8.33
16 Internet 6152 Total 4.40
17 Internet 6152 Tax NA
18 Internet 6152 Subtotal 3.67
推荐阅读
- powerbi - Power BI 直接查询优化和要使用的适当数据量
- python - Python 联合 Blob 检测
- c - C访问结构中的第一个字母
- java - 使用 Servlet 设置图像的路径
- python - 如何在 DataFrame 的某些行中使用定义的函数?
- reactjs - 嵌套导航器
- android - 为什么Android Studio可以在真实设备上运行应用程序并安装失败?
- flutter - 键入'_InternalLinkedHashMap
' 不是 'RxList 类型的子类型 ' - mysql - 该网站过去运行良好,但突然间我遇到了 DB 错误 1064
- typescript - 打字稿传递变量作为泛型类型参数