I would use nchar :
library(tibble)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
library(tidyr)
library(magrittr)
#>
#> Attaching package: 'magrittr'
#> The following object is masked from 'package:tidyr':
#>
#> extract
df1 <- tibble::tribble(
~X2nd.MD.ID, ~Gender, ~Age, ~Zip, ~Date.of.Service, ~ICD_1, ~ICD_2, ~ICD_3,
196602, "M", 0.0583, 60301, 12/10/2019, "P034" ,"Q5310" , "",
196603, "F", 0.0583, 60301, 12/10/2019, "" ,"Q5310" , "P035"
)
print(df1)
#> # A tibble: 2 x 8
#> X2nd.MD.ID Gender Age Zip Date.of.Service ICD_1 ICD_2 ICD_3
#> <dbl> <chr> <dbl> <dbl> <dbl> <chr> <chr> <chr>
#> 1 196602 M 0.0583 60301 0.000594 "P034" Q5310 ""
#> 2 196603 F 0.0583 60301 0.000594 "" Q5310 "P035"
longdata <- tidyr::pivot_longer(df1, cols = starts_with("ICD"),
names_to = "Diag", values_to = "sum") %T>%
print()
#> # A tibble: 6 x 7
#> X2nd.MD.ID Gender Age Zip Date.of.Service Diag sum
#> <dbl> <chr> <dbl> <dbl> <dbl> <chr> <chr>
#> 1 196602 M 0.0583 60301 0.000594 ICD_1 "P034"
#> 2 196602 M 0.0583 60301 0.000594 ICD_2 "Q5310"
#> 3 196602 M 0.0583 60301 0.000594 ICD_3 ""
#> 4 196603 F 0.0583 60301 0.000594 ICD_1 ""
#> 5 196603 F 0.0583 60301 0.000594 ICD_2 "Q5310"
#> 6 196603 F 0.0583 60301 0.000594 ICD_3 "P035"
longdata %>%
mutate(sum=ifelse(nchar(sum)>0,1,0))
#> # A tibble: 6 x 7
#> X2nd.MD.ID Gender Age Zip Date.of.Service Diag sum
#> <dbl> <chr> <dbl> <dbl> <dbl> <chr> <dbl>
#> 1 196602 M 0.0583 60301 0.000594 ICD_1 1
#> 2 196602 M 0.0583 60301 0.000594 ICD_2 1
#> 3 196602 M 0.0583 60301 0.000594 ICD_3 0
#> 4 196603 F 0.0583 60301 0.000594 ICD_1 0
#> 5 196603 F 0.0583 60301 0.000594 ICD_2 1
#> 6 196603 F 0.0583 60301 0.000594 ICD_3 1
longdata %>%
filter(nchar(sum)>0) %>%
rename(type=sum)
#> # A tibble: 4 x 7
#> X2nd.MD.ID Gender Age Zip Date.of.Service Diag type
#> <dbl> <chr> <dbl> <dbl> <dbl> <chr> <chr>
#> 1 196602 M 0.0583 60301 0.000594 ICD_1 P034
#> 2 196602 M 0.0583 60301 0.000594 ICD_2 Q5310
#> 3 196603 F 0.0583 60301 0.000594 ICD_2 Q5310
#> 4 196603 F 0.0583 60301 0.000594 ICD_3 P035
Created on 2020-08-01 by the reprex package (v0.3.0)