如何创建一个数据框,其中字段是另一个数据框中的值

时间:2018-09-03 13:31:43

标签: r dataframe

我是R编程的新手,感谢这个论坛提供的宝贵建议。

我正在使用以下格式的Dataframe DF1

我正在尝试创建另一个数据框DF2,其中DF1的“描述”列的值应为DF2中的列名,并且必须相应地捕获与该Decription对应的贷方和借方值(贷方为正数字和借方为负数)

DF1 DF2

如果您能在R中提出达到此目标的逻辑,我将不胜感激。在此先感谢。

dput(DF1) is as below
structure(list(Account_number = c(1234, 1234, 1234, 3456, 3456, 
4567, 4567), Credit = c(5.1, NA, 10, NA, 10, 5, NA), Debit = c(NA, 
7.2, NA, 20, NA, NA, 30), Description = c("abc", "pqr", "xyz", 
"xyz", "abc", "pqr", "abc")), .Names = c("Account_number", "Credit", 
"Debit", "Description"), row.names = c(NA, -7L), class = c("tbl_df", 
"tbl", "data.frame"))

愿望

1 个答案:

答案 0 :(得分:1)

使用tidyverse:

DF1 %>% mutate(Debit=-Debit) %>% 
  gather(k,v,-Account_number,-Description) %>%
  select(-k) %>% filter(!is.na(v)) %>% 
  spread(Description,v)

# A tibble: 3 x 4 
#  Account_number    abc    pqr   xyz
#*          <dbl>  <dbl>  <dbl> <dbl>
#1          1234.   5.10  -7.20   10.
#2          3456.  10.0   NA     -20.
#3          4567. -30.0    5.00   NA