Introduction

This analysis syntax use the master dataset down below with a few features:
- non consented patients removed;
- donors who could’ve been ruled out by breeze is marked as ‘Yes’ by the variable early_ruleout;
- N = 2576
- removed 85 patients from a list given by SBMC.

df <- read.csv("./Data/MFLADD_survey1&2_masterfile.csv", header = T) 

sbmc_exclude_IDs <- readxl::read_excel("./Data/MFALDD_Study ID_Exclusions 20191125v2yellow.xlsx",col_names = c("ID","REASON")) %>% 
  unique() %>% 
  mutate(
  ID = gsub("B", "SBMC", ID)
) %>% janitor::remove_empty_rows()  # this was one empty row


## filter df to exclude the above IDs

df <- df %>% filter(! uniq_id  %in% sbmc_exclude_IDs$ID)  # if ID in the remove list, exclude. 

df <- df %>% filter(early_ruleout == "No")  # remove another batch of IDs that needs to get excluded. 

df$race <- as.character(df$race)

Table 1. Participant Characteristics

var <- Cs(age, sex, race, language,education_level,early_ruleout)
facvar <- Cs(sex, race,language,education_level,early_ruleout)

table1 <- CreateTableOne(var, factorVars = facvar,data = df)
table1 <- print(table1, printToggle = F)

write.csv(table1, file = "./Output/Non-Early Ruleout Survey 1 patient characteristics.csv")


table1 %>% 
  as.data.frame() %>% 
  rownames_to_column("Variables") %>% 
  filter(!Variables %in% c("n", "")) %>% 
  select(Variables, `N (%)` = Overall) %>% 
  flextable::flextable() %>%
  autofit(add_w = 0.3) %>% 
  align(align = "left") %>%
  align(align = "left", part = "header") %>%
  add_header_lines("Participant Characteristics, Baseline (N = 2661)") %>% 
  fontsize( size = 14, part = "header") %>% 
  fontsize( size = 12, part = "body")

Participant Characteristics, Baseline (N = 2661)

Variables

N (%)

age (mean (sd))

43.72 (13.28)

sex = Male (%)

774 ( 39.5)

race (%)

Asian

219 ( 8.7)

Black

400 ( 15.9)

Hispanic

524 ( 20.9)

Other/Unknown

158 ( 6.3)

White

1212 ( 48.2)

language (%)

English

1723 ( 94.9)

Other

4 ( 0.2)

Spanish

89 ( 4.9)

education_level (%)

58 ( 2.3)

8th grade or less

61 ( 2.4)

Associate's or bachelor's degree

725 ( 28.1)

High school degree or equivalent (GED)

440 ( 17.1)

Professional or graduate degree

501 ( 19.4)

Some college credit, no degree

596 ( 23.1)

Some high school, no degree

85 ( 3.3)

Some professional or graduate school, no degree

110 ( 4.3)

early_ruleout = No (%)

2576 (100.0)

# kable(caption = "Table 1. Participant Characteristics (N = 2982)") %>% 
  # kable_styling(bootstrap_options = c("striped", "hover", "condensed","responsive"),full_width = FALSE)


# by race

table1_byrace <- CreateTableOne(var, strata = "race",factorVars = facvar,data = df %>% filter(! race == "Other/Unknown"))
table1_byrace <- print(table1_byrace, printToggle = F)

table1_byrace %>% 
  as.data.frame() %>% 
  rownames_to_column("Variables") %>% 
  filter(!Variables %in% c("n", " ")) %>% 
  flextable::flextable() %>%
  autofit(add_w = 0.3) %>% 
  align(align = "left") %>%
  align(align = "left", part = "header") %>%
  add_header_lines("Participant Characteristics by race, Baseline (N = 2661)") %>% 
  fontsize( size = 14, part = "header") %>% 
  fontsize( size = 12, part = "body") 

Participant Characteristics by race, Baseline (N = 2661)

Variables

Asian

Black

Hispanic

White

p

test

age (mean (sd))

42.05 (12.63)

40.67 (13.78)

40.26 (11.18)

46.63 (13.34)

<0.001

sex = Male (%)

57 ( 34.8)

176 ( 49.6)

138 ( 44.2)

350 ( 35.7)

<0.001

race (%)

<0.001

Asian

219 (100.0)

0 ( 0.0)

0 ( 0.0)

0 ( 0.0)

Black

0 ( 0.0)

400 (100.0)

0 ( 0.0)

0 ( 0.0)

Hispanic

0 ( 0.0)

0 ( 0.0)

524 (100.0)

0 ( 0.0)

White

0 ( 0.0)

0 ( 0.0)

0 ( 0.0)

1212 (100.0)

language (%)

<0.001

English

148 ( 97.4)

330 ( 99.4)

194 ( 75.2)

937 ( 98.7)

Other

4 ( 2.6)

0 ( 0.0)

0 ( 0.0)

0 ( 0.0)

Spanish

0 ( 0.0)

2 ( 0.6)

64 ( 24.8)

12 ( 1.3)

education_level (%)

<0.001

1 ( 0.5)

12 ( 3.0)

11 ( 2.1)

25 ( 2.1)

8th grade or less

5 ( 2.3)

3 ( 0.8)

32 ( 6.1)

12 ( 1.0)

Associate's or bachelor's degree

82 ( 37.4)

91 ( 22.8)

104 ( 19.8)

395 ( 32.6)

High school degree or equivalent (GED)

21 ( 9.6)

92 ( 23.0)

122 ( 23.3)

163 ( 13.4)

Professional or graduate degree

66 ( 30.1)

49 ( 12.2)

61 ( 11.6)

285 ( 23.5)

Some college credit, no degree

35 ( 16.0)

128 ( 32.0)

134 ( 25.6)

247 ( 20.4)

Some high school, no degree

2 ( 0.9)

12 ( 3.0)

47 ( 9.0)

17 ( 1.4)

Some professional or graduate school, no degree

7 ( 3.2)

13 ( 3.2)

13 ( 2.5)

68 ( 5.6)

early_ruleout = No (%)

219 (100.0)

400 (100.0)

524 (100.0)

1212 (100.0)

NA

write.csv(table1_byrace, "./Output/Non-Early Ruleout table patient characteristics by race ethnicity.csv")
# This sample only has early_ruleout == Yes, so this step is not needed.


# table1_pre <- CreateTableOne(var, strata = "early_ruleout",factorVars = facvar,data = df )
# table1_pre <- print(table1_pre, printToggle = F)
# 
# 
# table1_pre %>% 
#   as.data.frame() %>% 
#   rownames_to_column("Variables") %>% 
#   filter(!Variables %in% c("n", " ")) %>% 
#   flextable::flextable() %>%
#   autofit(add_w = 0.3) %>% 
#   align(align = "left") %>%
#   align(align = "left", part = "header") %>%
#   add_header_lines("Participant Characteristics by early_ruleout, Baseline (N = 2934)") %>% 
#   fontsize( size = 14, part = "header") %>% 
#   fontsize( size = 12, part = "body") 
#   
# write.csv(table1_pre, "./Output/Non-Early Ruleout table patient characteristics by pre breeze screen.csv")
# by patient relationship
table1_rel <- CreateTableOne(var, strata = "recip_rel",factorVars = facvar,data = df )
table1_rel <- print(table1_rel, printToggle = F)

table1_rel %>% 
  as.data.frame() %>% 
  rownames_to_column("Variables") %>% 
  filter(!Variables %in% c("n", " ")) %>% 
  flextable::flextable() %>%
  autofit(add_w = 0.3) %>% 
  align(align = "left") %>%
  align(align = "left", part = "header") %>%
  add_header_lines("Participant Characteristics by relationship with recipient, Baseline (N = 2661)") %>% 
  fontsize( size = 14, part = "header") %>% 
  fontsize( size = 12, part = "body") 

Participant Characteristics by relationship with recipient, Baseline (N = 2661)

Variables

Another blood or biological relative

Another relative, not related biologically

My brother or sister

My child

My friend or acquaintance

My parent

My spouse or life partner

Other

The next patient needing a kidney, chosen by the transplant center

p

test

age (mean (sd))

41.69 (13.14)

41.62 (14.45)

42.85 (12.62)

47.80 (11.66)

43.29 (11.62)

31.76 (7.98)

49.49 (11.64)

46.22 (12.91)

50.71 (13.41)

<0.001

sex = Male (%)

62 ( 44.3)

53 ( 49.5)

124 ( 46.4)

32 ( 36.4)

112 ( 32.3)

169 ( 50.8)

113 ( 34.8)

29 ( 36.7)

9 ( 47.4)

<0.001

race (%)

<0.001

Asian

8 ( 5.5)

5 ( 4.7)

21 ( 7.8)

9 ( 9.2)

7 ( 2.0)

18 ( 5.3)

39 ( 11.8)

5 ( 6.3)

0 ( 0.0)

Black

43 ( 29.7)

19 ( 17.9)

61 ( 22.8)

15 ( 15.3)

37 ( 10.6)

109 ( 32.3)

51 ( 15.5)

12 ( 15.2)

0 ( 0.0)

Hispanic

27 ( 18.6)

18 ( 17.0)

61 ( 22.8)

36 ( 36.7)

48 ( 13.7)

61 ( 18.1)

49 ( 14.8)

16 ( 20.3)

1 ( 5.3)

Other/Unknown

14 ( 9.7)

6 ( 5.7)

26 ( 9.7)

10 ( 10.2)

23 ( 6.6)

19 ( 5.6)

24 ( 7.3)

4 ( 5.1)

0 ( 0.0)

White

53 ( 36.6)

58 ( 54.7)

99 ( 36.9)

28 ( 28.6)

235 ( 67.1)

130 ( 38.6)

167 ( 50.6)

42 ( 53.2)

18 ( 94.7)

language (%)

NaN

English

122 ( 93.8)

95 ( 96.0)

219 ( 90.9)

59 ( 80.8)

321 ( 97.9)

303 ( 97.7)

272 ( 94.1)

70 ( 93.3)

18 (100.0)

Other

0 ( 0.0)

0 ( 0.0)

0 ( 0.0)

0 ( 0.0)

0 ( 0.0)

0 ( 0.0)

0 ( 0.0)

0 ( 0.0)

0 ( 0.0)

Spanish

8 ( 6.2)

4 ( 4.0)

22 ( 9.1)

14 ( 19.2)

7 ( 2.1)

7 ( 2.3)

17 ( 5.9)

5 ( 6.7)

0 ( 0.0)

education_level (%)

<0.001

6 ( 4.1)

2 ( 1.9)

2 ( 0.7)

6 ( 6.1)

10 ( 2.9)

13 ( 3.9)

9 ( 2.7)

2 ( 2.5)

1 ( 5.3)

8th grade or less

1 ( 0.7)

2 ( 1.9)

19 ( 7.0)

16 ( 16.3)

6 ( 1.7)

3 ( 0.9)

8 ( 2.4)

1 ( 1.3)

0 ( 0.0)

Associate's or bachelor's degree

31 ( 21.4)

28 ( 26.2)

67 ( 24.8)

16 ( 16.3)

108 ( 30.9)

103 ( 30.6)

83 ( 25.2)

21 ( 26.6)

6 ( 31.6)

High school degree or equivalent (GED)

32 ( 22.1)

27 ( 25.2)

53 ( 19.6)

20 ( 20.4)

62 ( 17.7)

62 ( 18.4)

73 ( 22.1)

14 ( 17.7)

2 ( 10.5)

Professional or graduate degree

30 ( 20.7)

16 ( 15.0)

42 ( 15.6)

8 ( 8.2)

68 ( 19.4)

41 ( 12.2)

74 ( 22.4)

17 ( 21.5)

5 ( 26.3)

Some college credit, no degree

32 ( 22.1)

23 ( 21.5)

57 ( 21.1)

22 ( 22.4)

71 ( 20.3)

95 ( 28.2)

60 ( 18.2)

18 ( 22.8)

2 ( 10.5)

Some high school, no degree

7 ( 4.8)

5 ( 4.7)

18 ( 6.7)

7 ( 7.1)

3 ( 0.9)

8 ( 2.4)

11 ( 3.3)

5 ( 6.3)

0 ( 0.0)

Some professional or graduate school, no degree

6 ( 4.1)

4 ( 3.7)

12 ( 4.4)

3 ( 3.1)

22 ( 6.3)

12 ( 3.6)

12 ( 3.6)

1 ( 1.3)

3 ( 15.8)

early_ruleout = No (%)

145 (100.0)

107 (100.0)

270 (100.0)

98 (100.0)

350 (100.0)

337 (100.0)

330 (100.0)

79 (100.0)

19 (100.0)

NA

write.csv(table1_rel, "./Output/Non-Early Ruleout table patient characteristics by relationship.csv")

Motivations

mot_better: By donating, I could make someone’s life better.
mot_belief: Donating could help my recipient live longer and have the freedom to do what is important.
mot_proud: Donating will make me feel proud of myself;
mot_benefit: I believe that donating will benefit the recipient’s entire family.
mot_helpfam: I believe that I should help my family and friends.

var_motivation <- df %>% select(starts_with("mot_"), -contains("_nolabel")) %>% names()

# df0 <- data.frame()
#   df.new <- lapply(df[var_motivation], function(x) tabyl(x) %>% adorn_pct_formatting() %>% rbind(.,df0)) 
# 
# 
# df_df <- do.call(rbind, df.new) %>% 
#   rownames_to_column("Motivations") %>% 
#   select(
#     Motivations, levels = x, n, valid_percent
#   )
# 
# df_df %>% flextable() %>% autofit(add_w = 0.3)


table.moti <- CreateTableOne(var_motivation, data=df %>% filter(! race == "Other/Unknown" ))

table.moti <- print(table.moti, printToggle = F)
table.moti
##                          
##                           Overall       
##   n                       "2355"        
##   mot_better (%)          ""            
##      Extremely important  "2054 (89.2) "
##      Important            " 230 (10.0) "
##      Not at all important "   7 ( 0.3) "
##      Slightly important   "  12 ( 0.5) "
##   mot_belief (%)          ""            
##      Extremely important  "1187 (51.9) "
##      Important            " 622 (27.2) "
##      Not at all important " 249 (10.9) "
##      Slightly important   " 230 (10.1) "
##   mot_longer (%)          ""            
##      Extremely important  "2118 (91.6) "
##      Important            " 187 ( 8.1) "
##      Not at all important "   4 ( 0.2) "
##      Slightly important   "   4 ( 0.2) "
##   mot_proud (%)           ""            
##      Extremely important  " 683 (29.9) "
##      Important            " 414 (18.1) "
##      Not at all important " 690 (30.2) "
##      Slightly important   " 500 (21.9) "
##   mot_benefit (%)         ""            
##      Extremely important  "1891 (82.3) "
##      Important            " 320 (13.9) "
##      Not at all important "  31 ( 1.3) "
##      Slightly important   "  56 ( 2.4) "
##   mot_helpfam (%)         ""            
##      Extremely important  "1777 (77.8) "
##      Important            " 427 (18.7) "
##      Not at all important "  24 ( 1.1) "
##      Slightly important   "  57 ( 2.5) "
# table.moti %>% 
#   as.data.frame() %>% 
#   rownames_to_column("Variables") %>% 
#   filter(!Variables %in% c("n", " ")) %>% 
#   select(Variables, `N (%)` = Overall) %>% 
#   flextable::flextable() %>%
#   autofit(add_w = 0.3) %>% 
#   align(align = "left") %>%
#   align(align = "left", part = "header") %>%
#   add_header_lines("Participant Characteristics, Baseline (N = 2661)") %>% 
#   fontsize( size = 14, part = "header") %>% 
#   fontsize( size = 12, part = "body") 

Motivation by race

yujieR::pubtableone(df %>% filter(! race == "Other/Unknown" ),var_motivation, var_motivation, "race")

Table x: header-here

Variables

Asian

Black

Hispanic

White

p

n

219

400

524

1212

mot_better....

0.179

X...Extremely.important

190 (89.2)

335 (87.0)

448 (87.2)

1081 (90.8)

X...Important

21 ( 9.9)

46 (11.9)

62 (12.1)

101 ( 8.5)

X...Not.at.all.important

0 ( 0.0)

2 ( 0.5)

0 ( 0.0)

5 ( 0.4)

X...Slightly.important

2 ( 0.9)

2 ( 0.5)

4 ( 0.8)

4 ( 0.3)

mot_belief....

<0.001

X...Extremely.important.1

118 (55.4)

213 (56.3)

273 (53.8)

583 (49.0)

X...Important.1

53 (24.9)

106 (28.0)

146 (28.8)

317 (26.6)

X...Not.at.all.important.1

15 ( 7.0)

23 ( 6.1)

56 (11.0)

155 (13.0)

X...Slightly.important.1

27 (12.7)

36 ( 9.5)

32 ( 6.3)

135 (11.3)

mot_longer....

0.644

X...Extremely.important.2

192 (89.7)

351 (90.5)

474 (91.5)

1101 (92.3)

X...Important.2

22 (10.3)

35 ( 9.0)

42 ( 8.1)

88 ( 7.4)

X...Not.at.all.important.2

0 ( 0.0)

1 ( 0.3)

0 ( 0.0)

3 ( 0.3)

X...Slightly.important.2

0 ( 0.0)

1 ( 0.3)

2 ( 0.4)

1 ( 0.1)

mot_proud....

<0.001

X...Extremely.important.3

82 (38.9)

163 (43.2)

201 (39.3)

237 (20.0)

X...Important.3

31 (14.7)

75 (19.9)

106 (20.7)

202 (17.0)

X...Not.at.all.important.3

64 (30.3)

93 (24.7)

114 (22.3)

419 (35.3)

X...Slightly.important.3

34 (16.1)

46 (12.2)

91 (17.8)

329 (27.7)

mot_benefit....

0.629

X...Extremely.important.4

179 (83.6)

314 (82.2)

422 (82.3)

976 (82.1)

X...Important.4

28 (13.1)

57 (14.9)

75 (14.6)

160 (13.5)

X...Not.at.all.important.4

1 ( 0.5)

6 ( 1.6)

4 ( 0.8)

20 ( 1.7)

X...Slightly.important.4

6 ( 2.8)

5 ( 1.3)

12 ( 2.3)

33 ( 2.8)

mot_helpfam....

0.600

X...Extremely.important.5

166 (78.3)

301 (79.2)

396 (78.0)

914 (77.1)

X...Important.5

39 (18.4)

68 (17.9)

100 (19.7)

220 (18.6)

X...Not.at.all.important.5

2 ( 0.9)

4 ( 1.1)

1 ( 0.2)

17 ( 1.4)

X...Slightly.important.5

5 ( 2.4)

7 ( 1.8)

11 ( 2.2)

34 ( 2.9)

footer-here

table.motiByRace <- CreateTableOne(var_motivation, strata = "race", data=df %>% filter(! race == "Other/Unknown" ))

table.motiByRace <- print(table.motiByRace, printToggle = F)

table.motiByRace %>% 
  as.data.frame() %>% 
  rownames_to_column("Variables") %>% 
  filter(!Variables %in% c("n", " ")) %>% 
  flextable::flextable() %>%
  autofit(add_w = 0.3) %>% 
  align(align = "left") %>%
  align(align = "left", part = "header") %>%
  add_header_lines("Participant Characteristics, Baseline (N = 2661)") %>% 
  fontsize( size = 14, part = "header") %>% 
  fontsize( size = 12, part = "body") 

Participant Characteristics, Baseline (N = 2661)

Variables

Asian

Black

Hispanic

White

p

test

mot_better....

0.179

X...Extremely.important

190 (89.2)

335 (87.0)

448 (87.2)

1081 (90.8)

X...Important

21 ( 9.9)

46 (11.9)

62 (12.1)

101 ( 8.5)

X...Not.at.all.important

0 ( 0.0)

2 ( 0.5)

0 ( 0.0)

5 ( 0.4)

X...Slightly.important

2 ( 0.9)

2 ( 0.5)

4 ( 0.8)

4 ( 0.3)

mot_belief....

<0.001

X...Extremely.important.1

118 (55.4)

213 (56.3)

273 (53.8)

583 (49.0)

X...Important.1

53 (24.9)

106 (28.0)

146 (28.8)

317 (26.6)

X...Not.at.all.important.1

15 ( 7.0)

23 ( 6.1)

56 (11.0)

155 (13.0)

X...Slightly.important.1

27 (12.7)

36 ( 9.5)

32 ( 6.3)

135 (11.3)

mot_longer....

0.644

X...Extremely.important.2

192 (89.7)

351 (90.5)

474 (91.5)

1101 (92.3)

X...Important.2

22 (10.3)

35 ( 9.0)

42 ( 8.1)

88 ( 7.4)

X...Not.at.all.important.2

0 ( 0.0)

1 ( 0.3)

0 ( 0.0)

3 ( 0.3)

X...Slightly.important.2

0 ( 0.0)

1 ( 0.3)

2 ( 0.4)

1 ( 0.1)

mot_proud....

<0.001

X...Extremely.important.3

82 (38.9)

163 (43.2)

201 (39.3)

237 (20.0)

X...Important.3

31 (14.7)

75 (19.9)

106 (20.7)

202 (17.0)

X...Not.at.all.important.3

64 (30.3)

93 (24.7)

114 (22.3)

419 (35.3)

X...Slightly.important.3

34 (16.1)

46 (12.2)

91 (17.8)

329 (27.7)

mot_benefit....

0.629

X...Extremely.important.4

179 (83.6)

314 (82.2)

422 (82.3)

976 (82.1)

X...Important.4

28 (13.1)

57 (14.9)

75 (14.6)

160 (13.5)

X...Not.at.all.important.4

1 ( 0.5)

6 ( 1.6)

4 ( 0.8)

20 ( 1.7)

X...Slightly.important.4

6 ( 2.8)

5 ( 1.3)

12 ( 2.3)

33 ( 2.8)

mot_helpfam....

0.600

X...Extremely.important.5

166 (78.3)

301 (79.2)

396 (78.0)

914 (77.1)

X...Important.5

39 (18.4)

68 (17.9)

100 (19.7)

220 (18.6)

X...Not.at.all.important.5

2 ( 0.9)

4 ( 1.1)

1 ( 0.2)

17 ( 1.4)

X...Slightly.important.5

5 ( 2.4)

7 ( 1.8)

11 ( 2.2)

34 ( 2.9)

write.csv(table.motiByRace, "./Output/Non-Early Ruleouttable motivation by race ethnicity.csv")

# by who passed breeze or breeze like screening
# yujieR::pubtableone(df,var_motivation, var_motivation, "early_ruleout")


# table1_pre_mot <- CreateTableOne(var_motivation, strata = "early_ruleout",factorVars = facvar,data = df )
# table1_pre_mot <- print(table1_pre_mot, printToggle = F)
# 
# 
# write.csv(table1_pre_mot, "./Output/Non-Early Ruleout table motivation by pre breeze screen.csv")

# by relationship

yujieR::pubtableone(df,var_motivation, var_motivation, "recip_rel")

Table x: header-here

Variables

Another blood or biological relative

Another relative, not related biologically

My brother or sister

My child

My friend or acquaintance

My parent

My spouse or life partner

Other

The next patient needing a kidney, chosen by the transplant center

p

n

145

107

270

98

350

337

330

79

19

mot_better....

0.234

X...Extremely.important

122 (87.1)

90 (85.7)

231 (87.2)

82 (87.2)

318 (93.0)

290 (88.7)

275 (88.1)

64 (82.1)

18 (94.7)

X...Important

17 (12.1)

12 (11.4)

31 (11.7)

12 (12.8)

23 ( 6.7)

34 (10.4)

32 (10.3)

14 (17.9)

1 ( 5.3)

X...Not.at.all.important

0 ( 0.0)

1 ( 1.0)

0 ( 0.0)

0 ( 0.0)

0 ( 0.0)

3 ( 0.9)

2 ( 0.6)

0 ( 0.0)

0 ( 0.0)

X...Slightly.important

1 ( 0.7)

2 ( 1.9)

3 ( 1.1)

0 ( 0.0)

1 ( 0.3)

0 ( 0.0)

3 ( 1.0)

0 ( 0.0)

0 ( 0.0)

mot_belief....

0.018

X...Extremely.important.1

68 (49.3)

50 (49.0)

130 (49.2)

50 (53.2)

200 (58.5)

154 (47.4)

162 (53.3)

44 (56.4)

12 (63.2)

X...Important.1

40 (29.0)

30 (29.4)

76 (28.8)

37 (39.4)

78 (22.8)

84 (25.8)

89 (29.3)

19 (24.4)

6 (31.6)

X...Not.at.all.important.1

16 (11.6)

14 (13.7)

36 (13.6)

5 ( 5.3)

33 ( 9.6)

40 (12.3)

29 ( 9.5)

6 ( 7.7)

0 ( 0.0)

X...Slightly.important.1

14 (10.1)

8 ( 7.8)

22 ( 8.3)

2 ( 2.1)

31 ( 9.1)

47 (14.5)

24 ( 7.9)

9 (11.5)

1 ( 5.3)

mot_longer....

0.029

X...Extremely.important.2

128 (92.1)

95 (90.5)

245 (91.4)

91 (93.8)

309 (89.8)

306 (92.2)

290 (92.4)

62 (79.5)

16 (84.2)

X...Important.2

11 ( 7.9)

10 ( 9.5)

21 ( 7.8)

6 ( 6.2)

35 (10.2)

25 ( 7.5)

21 ( 6.7)

14 (17.9)

3 (15.8)

X...Not.at.all.important.2

0 ( 0.0)

0 ( 0.0)

0 ( 0.0)

0 ( 0.0)

0 ( 0.0)

1 ( 0.3)

2 ( 0.6)

0 ( 0.0)

0 ( 0.0)

X...Slightly.important.2

0 ( 0.0)

0 ( 0.0)

2 ( 0.7)

0 ( 0.0)

0 ( 0.0)

0 ( 0.0)

1 ( 0.3)

2 ( 2.6)

0 ( 0.0)

mot_proud....

0.015

X...Extremely.important.3

51 (36.7)

38 (37.3)

91 (34.6)

41 (43.2)

90 (26.2)

129 (39.7)

100 (33.1)

20 (25.6)

6 (31.6)

X...Important.3

24 (17.3)

16 (15.7)

49 (18.6)

16 (16.8)

63 (18.3)

51 (15.7)

60 (19.9)

20 (25.6)

5 (26.3)

X...Not.at.all.important.3

45 (32.4)

30 (29.4)

81 (30.8)

30 (31.6)

104 (30.2)

78 (24.0)

91 (30.1)

22 (28.2)

4 (21.1)

X...Slightly.important.3

19 (13.7)

18 (17.6)

42 (16.0)

8 ( 8.4)

87 (25.3)

67 (20.6)

51 (16.9)

16 (20.5)

4 (21.1)

mot_benefit....

0.307

X...Extremely.important.4

114 (82.6)

88 (83.8)

225 (84.3)

79 (83.2)

286 (83.4)

288 (88.1)

256 (83.4)

60 (76.9)

16 (88.9)

X...Important.4

20 (14.5)

15 (14.3)

37 (13.9)

14 (14.7)

50 (14.6)

32 ( 9.8)

42 (13.7)

16 (20.5)

1 ( 5.6)

X...Not.at.all.important.4

0 ( 0.0)

0 ( 0.0)

3 ( 1.1)

1 ( 1.1)

2 ( 0.6)

4 ( 1.2)

7 ( 2.3)

2 ( 2.6)

0 ( 0.0)

X...Slightly.important.4

4 ( 2.9)

2 ( 1.9)

2 ( 0.7)

1 ( 1.1)

5 ( 1.5)

3 ( 0.9)

2 ( 0.7)

0 ( 0.0)

1 ( 5.6)

mot_helpfam....

0.600

X...Extremely.important.5

104 (75.4)

83 (82.2)

219 (83.0)

70 (74.5)

265 (77.0)

271 (82.6)

243 (79.4)

59 (76.6)

16 (88.9)

X...Important.5

33 (23.9)

16 (15.8)

40 (15.2)

23 (24.5)

71 (20.6)

53 (16.2)

54 (17.6)

14 (18.2)

2 (11.1)

X...Not.at.all.important.5

0 ( 0.0)

0 ( 0.0)

2 ( 0.8)

0 ( 0.0)

1 ( 0.3)

1 ( 0.3)

3 ( 1.0)

1 ( 1.3)

0 ( 0.0)

X...Slightly.important.5

1 ( 0.7)

2 ( 2.0)

3 ( 1.1)

1 ( 1.1)

7 ( 2.0)

3 ( 0.9)

6 ( 2.0)

3 ( 3.9)

0 ( 0.0)

footer-here

# library(export)
# 

Religion/Spirituality

religion_important: How important is religion or spirituality in your life?

religion_god: Do you believe in God or a universal spirit?

religion_mem: Are you a member of a church, synagogue or other place of worship?

var_religion <- df %>% select(starts_with("religion_"), -contains("_nolabel")) %>% names()

table.relig <- CreateTableOne(var_religion, data=df %>% filter(! race == "Other/Unknown" ))

table.relig <- print(table.relig, printToggle = F)

table.relig %>% 
  as.data.frame() %>% 
  rownames_to_column("Variables") %>% 
  filter(!Variables %in% c("n", " ")) %>% 
  select(Variables, `N (%)` = Overall) %>% 
  flextable::flextable() %>%
  autofit(add_w = 0.3) %>% 
  align(align = "left") %>%
  align(align = "left", part = "header") %>%
  add_header_lines("Participant Characteristics, Baseline (N = 2661)") %>% 
  fontsize( size = 14, part = "header") %>% 
  fontsize( size = 12, part = "body") 

Participant Characteristics, Baseline (N = 2661)

Variables

N (%)

religion_import....

X...Faily.Important

624 (27.0)

X...I.am.not.religious.or.spiritual

216 ( 9.3)

X...I.choose.not.to.answer

171 ( 7.4)

X...Not.Very.Important

269 (11.6)

X...Very.Important

1034 (44.7)

religion_god....

X...I.choose.not.to.answer.1

111 ( 4.8)

X...No

130 ( 5.6)

X...Not.sure

161 ( 7.0)

X...Yes

1910 (82.6)

religion_mem....

X...I.choose.not.to.answer.2

173 ( 7.5)

X...No.1

1026 (44.5)

X...Yes.1

1107 (48.0)

# by race
yujieR::pubtableone(df %>% filter(! race == "Other/Unknown" ),var_religion, var_religion, "race")

Table x: header-here

Variables

Asian

Black

Hispanic

White

p

n

219

400

524

1212

religion_import....

<0.001

X...Faily.Important

54 (25.4)

92 (23.8)

136 (26.2)

342 (28.6)

X...I.am.not.religious.or.spiritual

14 ( 6.6)

13 ( 3.4)

38 ( 7.3)

151 (12.6)

X...I.choose.not.to.answer

17 ( 8.0)

33 ( 8.5)

48 ( 9.2)

73 ( 6.1)

X...Not.Very.Important

26 (12.2)

18 ( 4.7)

49 ( 9.4)

176 (14.7)

X...Very.Important

102 (47.9)

231 (59.7)

248 (47.8)

453 (37.9)

religion_god....

<0.001

X...I.choose.not.to.answer.1

16 ( 7.5)

16 ( 4.1)

22 ( 4.2)

57 ( 4.8)

X...No

8 ( 3.8)

4 ( 1.0)

14 ( 2.7)

104 ( 8.7)

X...Not.sure

23 (10.8)

11 ( 2.8)

26 ( 5.0)

101 ( 8.5)

X...Yes

165 (77.8)

357 (92.0)

457 (88.1)

931 (78.0)

religion_mem....

<0.001

X...I.choose.not.to.answer.2

16 ( 7.4)

32 ( 8.3)

38 ( 7.4)

87 ( 7.3)

X...No.1

87 (40.5)

135 (35.2)

265 (51.3)

539 (45.3)

X...Yes.1

112 (52.1)

217 (56.5)

214 (41.4)

564 (47.4)

footer-here

table.religionByRace <- CreateTableOne(var_religion, strata = "race", data=df %>% filter(! race == "Other/Unknown" ))

table.religionByRace <- print(table.religionByRace, printToggle = F)

write.csv(table.religionByRace, "./Output/Non-Early Ruleout table religion by race ethnicity.csv")

# by who passed breeze or breeze like screening

# yujieR::pubtableone(df,var_religion, var_religion, "early_ruleout")
# 
# table1_pre_religion <- CreateTableOne(var_religion, strata = "early_ruleout",factorVars = facvar,data = df )
# table1_pre_religion <- print(table1_pre_religion, printToggle = F)
# 
# write.csv(table1_pre_religion, "./Output/Non-Early Ruleout table religion by pre breeze screen.csv")

# by relationship

yujieR::pubtableone(df,var_religion, var_religion, "recip_rel")

Table x: header-here

Variables

Another blood or biological relative

Another relative, not related biologically

My brother or sister

My child

My friend or acquaintance

My parent

My spouse or life partner

Other

The next patient needing a kidney, chosen by the transplant center

p

n

145

107

270

98

350

337

330

79

19

religion_import....

0.003

X...Faily.Important

40 (29.0)

32 (31.1)

74 (27.7)

23 (24.5)

86 (24.8)

98 (29.5)

85 (26.6)

19 (24.7)

2 (10.5)

X...I.am.not.religious.or.spiritual

10 ( 7.2)

6 ( 5.8)

13 ( 4.9)

3 ( 3.2)

31 ( 8.9)

41 (12.3)

17 ( 5.3)

6 ( 7.8)

2 (10.5)

X...I.choose.not.to.answer

12 ( 8.7)

10 ( 9.7)

24 ( 9.0)

10 (10.6)

28 ( 8.1)

36 (10.8)

18 ( 5.6)

7 ( 9.1)

0 ( 0.0)

X...Not.Very.Important

12 ( 8.7)

10 ( 9.7)

33 (12.4)

7 ( 7.4)

41 (11.8)

48 (14.5)

38 (11.9)

4 ( 5.2)

5 (26.3)

X...Very.Important

64 (46.4)

45 (43.7)

123 (46.1)

51 (54.3)

161 (46.4)

109 (32.8)

162 (50.6)

41 (53.2)

10 (52.6)

religion_god....

0.088

X...I.choose.not.to.answer.1

7 ( 5.0)

8 ( 7.7)

13 ( 4.9)

3 ( 3.2)

14 ( 4.1)

24 ( 7.2)

17 ( 5.3)

2 ( 2.6)

0 ( 0.0)

X...No

4 ( 2.8)

3 ( 2.9)

5 ( 1.9)

4 ( 4.3)

13 ( 3.8)

20 ( 6.0)

10 ( 3.1)

3 ( 3.8)

1 ( 5.3)

X...Not.sure

7 ( 5.0)

7 ( 6.7)

13 ( 4.9)

1 ( 1.1)

22 ( 6.4)

25 ( 7.5)

9 ( 2.8)

4 ( 5.1)

3 (15.8)

X...Yes

123 (87.2)

86 (82.7)

236 (88.4)

86 (91.5)

293 (85.7)

263 (79.2)

285 (88.8)

69 (88.5)

15 (78.9)

religion_mem....

0.233

X...I.choose.not.to.answer.2

15 (10.8)

7 ( 6.7)

22 ( 8.3)

9 ( 9.8)

31 ( 9.0)

27 ( 8.1)

25 ( 7.9)

6 ( 7.9)

0 ( 0.0)

X...No.1

55 (39.6)

47 (45.2)

111 (41.9)

30 (32.6)

152 (44.1)

166 (50.0)

125 (39.3)

38 (50.0)

11 (57.9)

X...Yes.1

69 (49.6)

50 (48.1)

132 (49.8)

53 (57.6)

162 (47.0)

139 (41.9)

168 (52.8)

32 (42.1)

8 (42.1)

footer-here

Altruistic donors

So far only 12 potential donors claims to be “altruistic” donors.

df$pt_stat %>% tabyl() %>%  adorn_pct_formatting()  # for ucla variable
##                           .    n percent valid_percent
##                  Altruistic   12    0.5%          2.9%
##               Back-up Donor   46    1.8%         11.2%
##      Declined participation    1    0.0%          0.2%
##              Donated Kidney   93    3.6%         22.6%
##                    Inactive   42    1.6%         10.2%
##                  Ineligible  154    6.0%         37.4%
##           Lost to Follow-Up   25    1.0%          6.1%
##              Never enrolled    1    0.0%          0.2%
##                     Opt Out   17    0.7%          4.1%
##                  Overweight    9    0.3%          2.2%
##  Paired-Exchange (non-UCLA)    4    0.2%          1.0%
##      Paired-Exchange (UCLA)    4    0.2%          1.0%
##          Reached Call Limit    4    0.2%          1.0%
##                        <NA> 2164   84.0%             -
# df$recip_rel %>% tabyl()  # for ucla variable

How did donors hear about the need of a donor?

Most donors(78%) heard about the need of a donor in either in-person conversations or telephone conversations, and this is consistent across racial/ethnicity groups. Only 6% heard about the need from social media platforms like facebook.

df$recip_first_how %>% tabyl() %>% 
  adorn_pct_formatting() %>% 
  arrange(-n) %>% 
  select(-valid_percent)
##                                                .    n percent
## 1                   In an in-person conversation 1663   64.6%
## 2                    In a telephone conversation  346   13.4%
## 3                                          Other  266   10.3%
## 4 Through a social media post (such as Facebook)  168    6.5%
## 5                          In an email or letter   47    1.8%
## 6                                I dont remember   43    1.7%
## 7                                           <NA>   43    1.7%
#by race

tabyl(df ,recip_first_how,race, show_na = FALSE) %>% 
  adorn_crosstab("col") %>% 
  as.data.frame() %>% 
  flextable::flextable() %>%
  autofit(add_w = 0.2) %>% 
  align(align = "left") %>%
  align(align = "left", part = "header")

recip_first_how

Asian

Black

Hispanic

Other/Unknown

White

I dont remember

1.9% (4)

1.0% (4)

1.9% (10)

0.0% (0)

2.1% (25)

In a telephone conversation

11.6% (25)

16.5% (66)

10.7% (55)

14.8% (23)

14.2% (169)

In an email or letter

0.9% (2)

0.5% (2)

0.0% (0)

0.6% (1)

2.9% (35)

In an in-person conversation

69.9% (151)

72.2% (288)

72.6% (374)

69.0% (107)

59.8% (710)

Other

12.0% (26)

7.0% (28)

10.1% (52)

9.0% (14)

11.7% (139)

Through a social media post (such as Facebook)

3.7% (8)

2.8% (11)

4.7% (24)

6.5% (10)

9.2% (109)

 # get p value
# CrossTable(df$recip_first_how, df$race, chisq  = T)

# by relationship

tabyl(df ,recip_first_how,recip_rel, show_na = FALSE) %>% 
  adorn_crosstab("col") %>% 
  as.data.frame() %>% 
  flextable::flextable() %>%
  autofit(add_w = 0.2) %>% 
  align(align = "left") %>%
  align(align = "left", part = "header")

recip_first_how

Another blood or biological relative

Another relative, not related biologically

My brother or sister

My child

My friend or acquaintance

My parent

My spouse or life partner

Other

The next patient needing a kidney, chosen by the transplant center

I dont remember

1.4% (2)

0.0% (0)

1.5% (4)

1.1% (1)

1.7% (6)

2.7% (9)

1.9% (6)

0.0% (0)

0.0% (0)

In a telephone conversation

30.3% (44)

15.1% (16)

26.1% (70)

7.4% (7)

15.9% (55)

9.3% (31)

3.1% (10)

11.5% (9)

6.2% (1)

In an email or letter

1.4% (2)

1.9% (2)

0.7% (2)

0.0% (0)

4.3% (15)

0.3% (1)

0.0% (0)

2.6% (2)

0.0% (0)

In an in-person conversation

58.6% (85)

72.6% (77)

66.0% (177)

76.8% (73)

58.2% (202)

81.2% (272)

78.9% (255)

42.3% (33)

6.2% (1)

Other

4.1% (6)

4.7% (5)

4.9% (13)

14.7% (14)

4.9% (17)

6.6% (22)

16.1% (52)

21.8% (17)

68.8% (11)

Through a social media post (such as Facebook)

4.1% (6)

5.7% (6)

0.7% (2)

0.0% (0)

15.0% (52)

0.0% (0)

0.0% (0)

21.8% (17)

18.8% (3)

  # get p value
# CrossTable(df$recip_first_how, df$recip_rel, chisq  = T)

Time needed to decide before getting tested

64% of potential donors claimed they needed no time and decided immediately to get tested. This number is 71% for Black and 66% for Hispanic donors, and 62% and 56% for White and Asian donors. When the recipient is a child, 81% of parants describe they needed no time and decided immediately to get tested.

df$recip_time %>% tabyl(show_na = F) %>% adorn_pct_formatting() %>% arrange(-n)
##                                       .    n percent
## 1 No time at all, I decided immediately 1576   63.6%
## 2                           1 to 7 days  235    9.5%
## 3                      More than 1 year  211    8.5%
## 4                         2 to 6 months  192    7.7%
## 5                     8 days to 1 month  170    6.9%
## 6                    6 months to 1 year   94    3.8%
# by race
tabyl(df ,recip_time,race, show_na = FALSE) %>% 
  as.data.frame() %>% 
  adorn_crosstab("col") %>% 
  flextable::flextable() %>%
  autofit(add_w = 0.2) %>% 
  align(align = "left") %>%
  align(align = "left", part = "header")

recip_time

Asian

Black

Hispanic

Other/Unknown

White

1 to 7 days

11.6% (25)

5.8% (23)

6.5% (33)

7.3% (11)

11.5% (132)

2 to 6 months

10.2% (22)

6.1% (24)

8.0% (41)

6.7% (10)

7.9% (90)

6 months to 1 year

1.9% (4)

4.3% (17)

4.1% (21)

2.0% (3)

4.1% (47)

8 days to 1 month

9.3% (20)

4.3% (17)

7.0% (36)

6.0% (9)

7.1% (81)

More than 1 year

11.6% (25)

9.9% (39)

9.0% (46)

10.0% (15)

7.1% (81)

No time at all, I decided immediately

55.3% (119)

69.6% (275)

65.4% (334)

68.0% (102)

62.4% (715)

# by relationship

tabyl(df ,recip_time,recip_rel, show_na = FALSE) %>% 
  adorn_crosstab("col") %>% 
  as.data.frame() %>% 
  flextable::flextable() %>%
  autofit(add_w = 0.2) %>% 
  align(align = "left") %>%
  align(align = "left", part = "header")

recip_time

Another blood or biological relative

Another relative, not related biologically

My brother or sister

My child

My friend or acquaintance

My parent

My spouse or life partner

Other

The next patient needing a kidney, chosen by the transplant center

1 to 7 days

7.0% (10)

12.1% (13)

7.7% (20)

2.1% (2)

13.6% (46)

3.6% (12)

4.7% (15)

15.5% (11)

30.0% (3)

2 to 6 months

9.9% (14)

8.4% (9)

5.4% (14)

6.2% (6)

9.2% (31)

7.3% (24)

3.8% (12)

7.0% (5)

0.0% (0)

6 months to 1 year

4.9% (7)

1.9% (2)

4.6% (12)

3.1% (3)

3.8% (13)

4.3% (14)

2.5% (8)

1.4% (1)

10.0% (1)

8 days to 1 month

5.6% (8)

7.5% (8)

6.2% (16)

4.1% (4)

8.9% (30)

7.0% (23)

4.4% (14)

4.2% (3)

10.0% (1)

More than 1 year

5.6% (8)

6.5% (7)

6.6% (17)

4.1% (4)

7.1% (24)

8.2% (27)

9.4% (30)

8.5% (6)

20.0% (2)

No time at all, I decided immediately

66.9% (95)

63.6% (68)

69.5% (180)

80.4% (78)

57.4% (194)

69.6% (229)

75.3% (241)

63.4% (45)

30.0% (3)

People in my community support me donating.

Potential donors’ communitities are often supportive in their decisions. 68% agree or strongly agrees that their communities is supportive in their decisions. Less Black donors (64%) say their communities are supportive. When the recipient is a child, 80% parents feel supported by their communities.

df$donor_comm %>% tabyl(show_na = F)  %>% adorn_pct_formatting() %>% arrange(-n)
##                            .   n percent
## 1             Strongly Agree 976   39.4%
## 2 Neither Agree nor Disagree 742   30.0%
## 3                      Agree 727   29.4%
## 4                   Disagree  18    0.7%
## 5          Strongly Disagree  13    0.5%
# by race
tabyl(df ,donor_comm,race, show_na = FALSE) %>% adorn_crosstab("col") %>% 
  as.data.frame() %>% 
  flextable::flextable() %>%
  autofit(add_w = 0.2) %>% 
  align(align = "left") %>%
  align(align = "left", part = "header")

donor_comm

Asian

Black

Hispanic

Other/Unknown

White

Agree

30.1% (63)

28.0% (104)

31.4% (159)

26.2% (39)

28.9% (340)

Disagree

0.5% (1)

0.3% (1)

1.6% (8)

0.7% (1)

0.6% (7)

Neither Agree nor Disagree

28.2% (59)

33.3% (124)

26.7% (135)

30.2% (45)

30.8% (363)

Strongly Agree

40.7% (85)

37.1% (138)

39.9% (202)

43.0% (64)

39.3% (462)

Strongly Disagree

0.5% (1)

1.3% (5)

0.4% (2)

0.0% (0)

0.4% (5)

# by relationship

tabyl(df ,donor_comm,recip_rel, show_na = FALSE) %>% 
  adorn_crosstab("col") %>% 
  as.data.frame() %>% 
  flextable::flextable() %>%
  autofit(add_w = 0.2) %>% 
  align(align = "left") %>%
  align(align = "left", part = "header")

donor_comm

Another blood or biological relative

Another relative, not related biologically

My brother or sister

My child

My friend or acquaintance

My parent

My spouse or life partner

Other

The next patient needing a kidney, chosen by the transplant center

Agree

30.7% (42)

25.2% (26)

28.0% (74)

20.2% (18)

32.8% (111)

24.5% (80)

30.2% (93)

23.3% (17)

31.6% (6)

Disagree

1.5% (2)

1.9% (2)

0.8% (2)

0.0% (0)

0.3% (1)

0.3% (1)

0.0% (0)

1.4% (1)

0.0% (0)

Neither Agree nor Disagree

34.3% (47)

35.0% (36)

26.1% (69)

22.5% (20)

38.5% (130)

31.0% (101)

27.3% (84)

42.5% (31)

31.6% (6)

Strongly Agree

32.8% (45)

36.9% (38)

44.7% (118)

57.3% (51)

28.1% (95)

43.6% (142)

41.6% (128)

31.5% (23)

36.8% (7)

Strongly Disagree

0.7% (1)

1.0% (1)

0.4% (1)

0.0% (0)

0.3% (1)

0.6% (2)

1.0% (3)

1.4% (1)

0.0% (0)

Is there someone important in your life who does not want you to donate?

Only 13% of potential donors admitted there are someone important in their lives do not want them to donate. Asian donors facing the most resistance from their important ones (17%) followed by White (13%) and Hispanic (15%) and Black donors (8%). When the recipient is a child or spouse/life partner, the potential donors faces least resistance (4% and 8%, respectively).

df$donor_import %>% tabyl(show_na = F)  %>% adorn_pct_formatting() %>% arrange(-n)
##     .    n percent
## 1  No 2009   87.2%
## 2 Yes  294   12.8%
# by race
tabyl(df ,donor_import,race, show_na = FALSE) %>% adorn_crosstab("col") %>% 
  as.data.frame() %>% 
  flextable::flextable() %>%
  autofit(add_w = 0.2) %>% 
  align(align = "left") %>%
  align(align = "left", part = "header")

donor_import

Asian

Black

Hispanic

Other/Unknown

White

No

82.8% (168)

91.8% (326)

85.9% (367)

83.5% (111)

87.6% (986)

Yes

17.2% (35)

8.2% (29)

14.1% (60)

16.5% (22)

12.4% (139)

# by relationship

tabyl(df ,donor_import,recip_rel, show_na = FALSE) %>% adorn_crosstab("col") %>% 
  as.data.frame() %>% 
  flextable::flextable() %>%
  autofit(add_w = 0.2) %>% 
  align(align = "left") %>%
  align(align = "left", part = "header")

donor_import

Another blood or biological relative

Another relative, not related biologically

My brother or sister

My child

My friend or acquaintance

My parent

My spouse or life partner

Other

The next patient needing a kidney, chosen by the transplant center

No

86.9% (106)

88.3% (83)

93.1% (215)

96.9% (62)

87.9% (277)

90.3% (279)

93.2% (260)

86.2% (56)

88.9% (16)

Yes

13.1% (16)

11.7% (11)

6.9% (16)

3.1% (2)

12.1% (38)

9.7% (30)

6.8% (19)

13.8% (9)

11.1% (2)

Appendix

Get p values by race for the above tables

Fisher’s exact test of these variables by race/ethnicity.

varlist <- Cs(recip_first_how, recip_time, donor_comm,donor_import)

p.all <- do.call(rbind, 
lapply(df[varlist], function(x) fisher.test(table(x,df$race), simulate.p.value = T)$p.value)
)

p.all 
##                         [,1]
## recip_first_how 0.0004997501
## recip_time      0.0014992504
## donor_comm      0.3823088456
## donor_import    0.0069965017
# the p values look the same becauses of p-values computed by Monte Carlo simulation, in larger than 2by2 tables, the similar ones will be < 0.001 anyways. 

Get p values by relationship for the above tables

varlist <- Cs(recip_first_how, recip_time, donor_comm,donor_import)

p.all2 <- do.call(rbind, 
lapply(df[varlist], function(x) fisher.test(table(x,df$recip_rel), simulate.p.value = TRUE)$p.value)
)

p.all2
##                         [,1]
## recip_first_how 0.0004997501
## recip_time      0.0004997501
## donor_comm      0.0004997501
## donor_import    0.0719640180