Skip to content

Clinicopathologic and Outcome Features of Superficial High-Grade and Deep Low-Grade Squamous Cell Carcinomas of the Penis

Notifications You must be signed in to change notification settings

alcideschaux/Penis-Paradoxical

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Paradoxical Tumors in Penile Cancer

Summary

The aim of this study is to report the clinicopathologic and outcome features of superficial high-grade and deep low-grade penile squamous cell carcinomas. For this, we used a retrospectively-colleted series of patients with penile cancer, in which we identified 41 cases corresponding to 12 superficial high-grade tumors and 29 deep low-grade tumors. As outcomes we evaluated inguinal lymph node status, presence of tumor relapse, final nodal status, and cancer-specific death. Follow-up ranged from 0.8 to 386.7 months (mean, 152.5 months; median, 157.3 months). Clinicopathologic features were similar between superficial high-grade and deep low-grade tumors, except for a tendendy (Fisher’s exact P = 0.057) of the former to include tumors with a verruciform pattern of growth. A significantly higher proportion of inguinal lymph node metastasis was found in superficial high-grade tumors compared to deep low-grade tumors (80% vs. 20% respectively, Fisher’s exact P = 0.02). No significant differences were found regarding tumor relapse (Fisher’s exact P = 0.52), final nodal status (Mantel-Cox’s P = 0.42), or cancer-related death (Mantel-Cox’s P = 0.52). Our findings suggest that patients with superficial high-grade tumors may be treated differently from patients with deep low-grade tumors, at least to control short-term local disease. Prophylactic inguinal lymphadenectomuy might be indicated in cases of superficial tumors with high-grade histology while in deeply invasive low-grade penile carcinomas a more conservative approach may be considered.

Description of the repository

This repository contains the full statistical analysis of the dataset that was used for the article "Clinicopathologic and Outcome Features of Superficial High-Grade and Deep Low-Grade Squamous Cell Carcinomas of the Penis". The article is published in SpringerPlus and is available here.

This repository also contains the following files:

  • The preprint (post accepted) version of the article
  • The BibTeX file containing all the references cited in the article
  • The R script that was used for analyzing the dataset and write the article
  • The R Markdown file used for this report
  • The figures included in this repository in PNG format

Data were analyzed using R version 3.1.2 “Pumpkin Helmet” (R Foundation for Statistical Computing, Vienna, Austria). Results were written using RMarkDown inside RStudio version 0.99.292, powered by the knitr package version 1.9 by Yihui Xie.

Building the dataset for analysis

First we loaded the full dataset including 333 patiens with invasive penile squamous cell carcinoma.

Data <- read.csv("Article/PenisSCC_333.csv")

The full dataset is available at http://dx.doi.org/10.6084/m9.figshare.1290997, which also contains the dataset's codebook. We excluded patients who were lost at follow up in Outcome.

Data <- subset(Data, Outcome != "Lost at follow-up")

We then recoded 3 variables, creating new variables cancer-related death (DOD), final nodal status (Final_Nodal), and anatomical location (Anatomical). Positive cases for Final_Nodalwhere those with lymph node metastasis in the groin dissection, local relapse during follow-up, or unfavorable outcome, including alive with disease and death by cancer. We also reordered Subtype.

# Creating a new variable for cancer-related death
Data$DOD <- ifelse(Data$Outcome == "Died of cancer", c("Yes"), c("No"))
Data$DOD <- factor(Data$DOD)
# Creating a new variable for the final nodal status
## Positive cases where those with:
  # Nodal metastasis in lymphadenectomy
  Data$Final_Nodal <- ifelse(Data$Mets == "Yes", c("Positive"), c("Negative"))
  # Local relapse during follow-up
  Data$Final_Nodal[Data$Local == "Yes"] <- "Positive"
  # Unfavorable outcome, including alive with disease and death by cancer
  Data$Final_Nodal[Data$Outcome == "Alive with disease"] <- "Positive"
  Data$Final_Nodal[Data$Outcome == "Died of cancer"] <- "Positive"
  Data$Final_Nodal <- factor(Data$Final_Nodal)
# Creating a new variable for anatomical location
Data$Anatomical[Data$Glans == "Yes" &
  Data$Sulcus == "No" &
  Data$Foreskin == "No"] <- "Glans alone"
Data$Anatomical[Data$Glans == "Yes" &
  Data$Sulcus == "Yes" &
  Data$Foreskin == "No"] <- "Glans + Coronal sulcus"
Data$Anatomical[Data$Glans == "Yes" &
  Data$Sulcus == "Yes" &
  Data$Foreskin == "Yes"] <- "Glans + Coronal sulcus + Foreskin"
Data$Anatomical <- factor(Data$Anatomical,
  levels = c("Glans alone", "Glans + Coronal sulcus",
    "Glans + Coronal sulcus + Foreskin"))
# Releveling variables
Data$Subtype <- factor(Data$Subtype,
  levels = c("Usual", "Verrucous", "Papillary", "Warty", "Mixed"))

We finally searched the dataset for cases of superficial high-grade and deep low-grade tumors, using the following criteria:

  • Superficial High-Grade Tumors: Grade 3 tumors invading lamina propria or superficial corpus spongiosum (tumor thickness equals to or less than 5 mm).
  • Deep Low-Grade Tumors: Grade 1 tumors invading deep corpus spongiosum (tumor thickness equals to or greater than 10 mm) or corpus cavernosum, including tunica albuginea.

We then excluded the missing cases and dropped unused levels.

# Superficial High-Grade Tumors
Data$Paradoxical[Data$Grade == "Grade 3" &
  Data$Level == "Lamina propria"] <- "Superficial High-Grade"
Data$Paradoxical[Data$Grade == "Grade 3" &
  Data$Level == "Corpus spongiosum" &
  Data$Thickness <= 5] <- "Superficial High-Grade"
# Deep Low-Grade Tumors
Data$Paradoxical[Data$Grade == "Grade 1" &
  Data$Level == "Corpus cavernosum"] <- "Deep Low-Grade"
Data$Paradoxical[Data$Grade == "Grade 1" &
  Data$Level == "Corpus spongiosum" &
  Data$Thickness >= 10] <- "Deep Low-Grade"
# Converting to Factor
Data$Paradoxical <- factor(Data$Paradoxical,
  levels = c("Superficial High-Grade", "Deep Low-Grade"))
# Excluding missing cases
Data <- Data[complete.cases(Data$Paradoxical), ]
# Dropping unused levels
Data <- droplevels(Data)

Data analysis was carried out on this dataset, using the simpleR package.

library(simpleR)

Methodology

Data analysis is divided in 4 sections, as it follows:

Descriptive Statistics. All the variables included in the dataset were analyzed using bar plots, histograms, box plots, and one-way tables. Factor variables were described using absolute and relative percentages. Numeric variables were described using mean, standard deviation, median, interquartile range, minimum and maximum value.

Inferential Statistics: Statistical tests (Fisher's exact test for categorical variables, Kruskal-Wallis test for numerical variables) were carried out to compare the clinicopathologic and outcome features between superficial high-grade and deep low-grade tumors. A 2-tailed P value was reported in all instances. Reported statistics included absolute and relative percentages for categorical variables; and mean, standard deviation, median, interquartile range, minimum and maximum value for numeric variables, by tumor type (superficial high-grade vs. deep low-grade).

Survival Analysis. For all variables in the dataset survival curves were built for final nodal status and cancer-related death using the Kaplan-Meier method. Survival curves were compared using the Mantel-Cox (log-rank) test. Numerical variables were splitted in 2 levels using the median as the cutoff point. A 2-tailed P value was reported in all instances.

Logistic Regression Analysis. Odds ratios (OR) with 95% confidence intervals (CI) and their associated P values were estimated for superficial high-grade vs. deep low-grade tumors, considering inguinal lymph node metastasis, tumor relapse, final nodal status, and cancer-related death.

Cox's Proportional Hazards Regression Analysis. Hazard ratios (OR) with 95% confidence intervals (CI) and their associated P values were estimated for superficial high-grade vs. deep low-grade tumors, considering inguinal lymph node metastasis, tumor relapse, final nodal status, and cancer-related death.

library(knitr)
opts_chunk$set(fig.width = 8, fig.height = 6, message = FALSE, warning = FALSE)

Here it follows the description of all the variables included in the analyzed dataset.

Surgical Procedure for Primary Treatment

Var <- Data$Procedure
categorical.plot(Var)

plot of chunk Procedure

descriptive.categorical(Var)
No. Cases %
Partial penectomy 25 61
Total penectomy 16 39

Number of missing cases: 0 cases.


Histologic Subtype

Var <- Data$Subtype
categorical.plot(Var, align = "h", left =8)

plot of chunk Subtype

descriptive.categorical(Var)
No. Cases %
Usual 24 58.5
Verrucous 7 17.1
Papillary 3 7.3
Warty 3 7.3
Mixed 4 9.8

Number of missing cases: 0 cases.


Anatomical Location

Var <- Data$Anatomical
categorical.plot(Var, align = "h", left = 14)

plot of chunk Anatomical

descriptive.categorical(Var)
No. Cases %
Glans alone 26 63
Glans + Coronal sulcus 6 15
Glans + Coronal sulcus + Foreskin 9 22

Number of missing cases: 0 cases.


Anatomical Level of Maximum Tumor Invasion

Var <- Data$Level
categorical.plot(Var, align = "h", left = 9)

plot of chunk Level

descriptive.categorical(Var)
No. Cases %
Corpus cavernosum 27 65.9
Corpus spongiosum 12 29.3
Lamina propria 2 4.9

Number of missing cases: 0 cases.


Tumor Size, cm

Var <- Data$Size
numerical.plot(Var, label = "Tumor Size, cm")

plot of chunk Size plot of chunk Size

descriptive.numerical(Var)
Statistics Values
Mean 4.8
Standard Deviation 2
Median 5
Interquartile Range 2.9
Mininum 1.3
Maximum 9

Number of missing cases: 15 cases.


Patient's Age, years

Var <- Data$Age
numerical.plot(Var, label = "Patient's Age, years")

plot of chunk Age plot of chunk Age

descriptive.numerical(Var)
Statistics Values
Mean 56.2
Standard Deviation 12.3
Median 55
Interquartile Range 19
Mininum 33
Maximum 85

Number of missing cases: 0 cases.


Bilateral Inguinal Lymphadenectomy

Var <- Data$Lymphadenectomy
categorical.plot(Var)

plot of chunk Lymphadenectomy

descriptive.categorical(Var)
No. Cases %
No 23 56
Yes 18 44

Number of missing cases: 0 cases.


Inguinal Lymph Node Metastasis

Var <- Data$Mets
categorical.plot(Var)

plot of chunk Mets

descriptive.categorical(Var)
No. Cases %
No 36 88
Yes 5 12

Number of missing cases: 0 cases.


Tumor Invasion of Penile Urethra

Var <- Data$Urethra
categorical.plot(Var)

plot of chunk Urethra

descriptive.categorical(Var)
No. Cases %
No 19 56
Yes 15 44

Number of missing cases: 7 cases.


Vascular Invasion

Var <- Data$Vascular
categorical.plot(Var)

plot of chunk Vascular

descriptive.categorical(Var)
No. Cases %
No 36 90
Yes 4 10

Number of missing cases: 1 cases.


Perineural Invasion

Var <- Data$Perineural
categorical.plot(Var)

plot of chunk Perineural

descriptive.categorical(Var)
No. Cases %
No 34 85
Yes 6 15

Number of missing cases: 1 cases.


Pathological T Stage

Var <- Data$pT
categorical.plot(Var)

plot of chunk pT

descriptive.categorical(Var)
No. Cases %
T1 1 2.9
T2 18 52.9
T3 15 44.1

Number of missing cases: 7 cases.


Tumor Relapse (Local, Regional or Systemic)

Var <- Data$Relapse
categorical.plot(Var)

plot of chunk Relapse

descriptive.categorical(Var)
No. Cases %
No 38 95
Yes 2 5

Number of missing cases: 1 cases.


Follow-up Length, months

Var <- Data$FollowUp
numerical.plot(Var, label = "Follow-Up, Months")

plot of chunk FollowUp plot of chunk FollowUp

descriptive.numerical(Var)
Statistics Values
Mean 152.5
Standard Deviation 101
Median 157.3
Interquartile Range 143.6
Mininum 0.8
Maximum 386.7

Number of missing cases: 0 cases.


Patient's Outcome

Var <- Data$Outcome
categorical.plot(Var)

plot of chunk Outcome

descriptive.categorical(Var)
No. Cases %
Alive with disease 3 7.3
Alive without disease 23 56.1
Died of cancer 1 2.4
Died of other causes 14 34.1

Number of missing cases: 0 cases.


Clinical N Stage

Var <- Data$cN
categorical.plot(Var)

plot of chunk cN

descriptive.categorical(Var)
No. Cases %
cN0 20 50
cN1 7 18
cN2 13 32

Number of missing cases: 1 cases.


Final Nodal Status

Var <- Data$Final_Nodal
categorical.plot(Var)

plot of chunk Final_Nodal

descriptive.categorical(Var)
No. Cases %
Negative 33 80
Positive 8 20

Number of missing cases: 0 cases.


Cancer-Related Death

Var <- Data$DOD
categorical.plot(Var)

plot of chunk DOD

descriptive.categorical(Var)
No. Cases %
No 40 97.6
Yes 1 2.4

Number of missing cases: 0 cases.


Var2 <- Data$Paradoxical

Tumor Type and Surgical Procedure

Var1 <- Data$Procedure
categorical.group.plot(Var1, Var2)

plot of chunk Paradoxical_Procedure

descriptive.categorical.group(Var1, Var2)
Superficial High-Grade % Deep Low-Grade %
Partial penectomy 10 83.3 15 51.7
Total penectomy 2 16.7 14 48.3

Tumor Type and Anatomical Location

Var1 <- Data$Anatomical
categorical.group.plot(Var1, Var2)

plot of chunk Paradoxical_Anatomical

descriptive.categorical.group(Var1, Var2)
Superficial High-Grade % Deep Low-Grade %
Glans alone 7 58.3 19 65.5
Glans + Coronal sulcus 2 16.7 4 13.8
Glans + Coronal sulcus + Foreskin 3 25.0 6 20.7

Tumor Type and Anatomical Level

Var1 <- Data$Level
categorical.group.plot(Var1, Var2)

plot of chunk Paradoxical_Level

descriptive.categorical.group(Var1, Var2)
Superficial High-Grade % Deep Low-Grade %
Corpus cavernosum 0 0.0 27 93.1
Corpus spongiosum 10 83.3 2 6.9
Lamina propria 2 16.7 0 0.0

Tumor Type and Tumor Size

Var1 <- Data$Size
numerical.group.plot(Var1, Var2)

plot of chunk Paradoxical_Size

descriptive.numerical.group(Var1, Var2)
Superficial High-Grade Deep Low-Grade
Mean 4.8 4.8
Standard Deviation 3.0 1.7
Median 4.5 5.0
Interquartile Range 4.1 2.1
Minimum 1.3 2.0
Maximum 9.0 9.0

Tumor Type and Patient's Age

Var1 <- Data$Age
numerical.group.plot(Var1, Var2)

plot of chunk Paradoxical_Age

descriptive.numerical.group(Var1, Var2)
Superficial High-Grade Deep Low-Grade
Mean 50.8 58.4
Standard Deviation 10.5 12.4
Median 52.5 56.0
Interquartile Range 12.5 19.0
Minimum 33.0 37.0
Maximum 69.0 85.0

Tumor Type and Urethral Invasion

Var1 <- Data$Urethra
categorical.group.plot(Var1, Var2)

plot of chunk Paradoxical_Urethra

descriptive.categorical.group(Var1, Var2)
Superficial High-Grade % Deep Low-Grade %
No 6 66.7 13 52
Yes 3 33.3 12 48

Tumor Type and Vascular Invasion

Var1 <- Data$Vascular
categorical.group.plot(Var1, Var2)

plot of chunk Paradoxical_Vascular

descriptive.categorical.group(Var1, Var2)
Superficial High-Grade % Deep Low-Grade %
No 10 83.3 26 92.9
Yes 2 16.7 2 7.1

Tumor Type and Perineural Invasion

Var1 <- Data$Perineural
categorical.group.plot(Var1, Var2)

plot of chunk Paradoxical_Perineural

descriptive.categorical.group(Var1, Var2)
Superficial High-Grade % Deep Low-Grade %
No 10 83.3 24 85.7
Yes 2 16.7 4 14.3

Tumor Type and cN Stage

Var1 <- Data$cN
categorical.group.plot(Var1, Var2)

plot of chunk Paradoxical_cN

descriptive.categorical.group(Var1, Var2)
Superficial High-Grade % Deep Low-Grade %
cN0 8 66.7 12 42.9
cN1 0 0.0 7 25.0
cN2 4 33.3 9 32.1

Tumor Type and pT Stage

Var1 <- Data$pT
categorical.group.plot(Var1, Var2)

plot of chunk Paradoxical_pT

descriptive.categorical.group(Var1, Var2)
Superficial High-Grade % Deep Low-Grade %
T1 1 11.1 0 0
T2 5 55.6 13 52
T3 3 33.3 12 48

Tumor Type and Inguinal LN Metastasis

Var1 <- Data$Mets
categorical.group.plot(Var1, Var2)

plot of chunk Paradoxical_Mets

descriptive.categorical.group(Var1, Var2)
Superficial High-Grade % Deep Low-Grade %
No 8 66.7 28 96.6
Yes 4 33.3 1 3.4

Tumor Type and Tumor Relapse

Var1 <- Data$Relapse
categorical.group.plot(Var1, Var2)

plot of chunk Paradoxical_Relapse

descriptive.categorical.group(Var1, Var2)
Superficial High-Grade % Deep Low-Grade %
No 11 91.7 27 96.4
Yes 1 8.3 1 3.6

Tumor Type and Final Nodal Status

Var1 <- Data$Final_Nodal
categorical.group.plot(Var1, Var2)

plot of chunk Paradoxical_FN

descriptive.categorical.group(Var1, Var2)
Superficial High-Grade % Deep Low-Grade %
Negative 8 66.7 25 86.2
Positive 4 33.3 4 13.8

Tumor Type and Cancer-Related Death

Var1 <- Data$DOD
categorical.group.plot(Var1, Var2)

plot of chunk Paradoxical_DOD

descriptive.categorical.group(Var1, Var2)
Superficial High-Grade % Deep Low-Grade %
No 12 100 28 96.6
Yes 0 0 1 3.4

source("RiskTable.R")
x.lab <- "Follow-Up, Months"
y.lab <- "Survival Function"
# Defining outcome variable
Status <- Data$Final_Nodal
# Creating dicotomic variables from numerical variables for plotting
Size_Median <- factor(ifelse(Data$Size > median(Data$Size, na.rm = TRUE),
  c("Above Median Size"), c("Below Median Size")))
Age_Median <- factor(ifelse(Data$Age > median(Data$Age, na.rm = TRUE),
  c("Above Median Age"), c("Below Median Age")))
# By type of tumor
with(Data, survival.plot(Paradoxical, FollowUp, Status,
  xlab = x.lab, ylab = y.lab,
  title = "Final Nodal Status by Tumor Type"))

plot of chunk FN_Survival

with(Data, risk.table(Paradoxical, FollowUp, Status))
0 50 100 150 200 250 300
Superficial High-Grade 12 11 10 9 6 2 2
Deep Low-Grade 29 20 16 12 8 4 2
# By surgical procedure
with(Data, survival.plot(Procedure, FollowUp, Status,
  xlab = x.lab, ylab = y.lab,
  title = "Final Nodal Status by Surgical Procedure"))

plot of chunk FN_Survival

with(Data, risk.table(Procedure, FollowUp, Status))
0 50 100 150 200 250 300
Partial penectomy 25 19 17 14 8 4 3
Total penectomy 16 12 9 7 6 2 1
# By anatomical location
with(Data, survival.plot(Anatomical, FollowUp, Status,
  xlab = x.lab, ylab = y.lab, ylim = c(0, 1.09),
  title = "Final Nodal Status by Anatomical Location"))

plot of chunk FN_Survival

with(Data, risk.table(Anatomical, FollowUp, Status))
0 50 100 150 200 250 300
Glans alone 26 19 14 13 10 3 1
Glans + Coronal sulcus 6 5 5 3 2 2 2
Glans + Coronal sulcus + Foreskin 9 7 7 5 2 1 1
# By anatomical level
with(Data, survival.plot(Level, FollowUp, Status,
  xlab = x.lab, ylab = y.lab, ylim = c(0, 1.09),
  title = "Final Nodal Status by Anatomical Level"))

plot of chunk FN_Survival

with(Data, risk.table(Level, FollowUp, Status))
0 50 100 150 200
Corpus cavernosum 27 19 15 12 8
Corpus spongiosum 12 10 10 8 5
Lamina propria 2 2 1 1 1
# By median tumor size
with(Data, survival.plot(Size_Median, FollowUp, Status,
  xlab = x.lab, ylab = y.lab,
  title = "Final Nodal Status by Median Tumor Size"))

plot of chunk FN_Survival

with(Data, risk.table(Size_Median, FollowUp, Status))
0 50 100 150 200
Above Median Size 9 7 6 5 3
Below Median Size 17 11 7 4 2
# By median patient's age
with(Data, survival.plot(Age_Median, FollowUp, Status,
  xlab = x.lab, ylab = y.lab,
  title = "Final Nodal Status by Median Patient's Age"))

plot of chunk FN_Survival

with(Data, risk.table(Age_Median, FollowUp, Status))
0 50 100 150 200
Above Median Age 19 13 10 7 5
Below Median Age 22 18 16 14 9
# By urethral invasion
with(Data, survival.plot(Urethra, FollowUp, Status,
  xlab = x.lab, ylab = y.lab,
  title = "Final Nodal Status by Urethral Invasion"))

plot of chunk FN_Survival

with(Data, risk.table(Urethra, FollowUp, Status))
0 50 100 150 200 250 300
No 19 14 12 10 6 2 1
Yes 15 11 9 7 4 3 3
# By vascular invasion
with(Data, survival.plot(Vascular, FollowUp, Status,
  xlab = x.lab, ylab = y.lab,
  title = "Final Nodal Status by Vascular Invasion"))

plot of chunk FN_Survival

with(Data, risk.table(Vascular, FollowUp, Status))
0 50 100 150 200
No 36 27 22 17 12
Yes 4 3 3 3 2
# By perineural invasion
with(Data, survival.plot(Perineural, FollowUp, Status,
  xlab = x.lab, ylab = y.lab,
  title = "Final Nodal Status by Perineural Invasion"))

plot of chunk FN_Survival

with(Data, risk.table(Perineural, FollowUp, Status))
0 50 100 150 200 250
No 34 26 21 16 11 5
Yes 6 4 4 4 3 1
# By pathological T stage
with(Data, survival.plot(pT, FollowUp, Status,
  xlab = x.lab, ylab = y.lab,
  title = "Final Nodal Status by Pathological T Stage"))

plot of chunk FN_Survival

with(Data, risk.table(pT, FollowUp, Status))
0 50
T1 1 1
T2 18 13
T3 15 11
# By clinical N stage
with(Data, survival.plot(cN, FollowUp, Status,
  xlab = x.lab, ylab = y.lab,
  title = "Final Nodal Status by Clinical N Stage"))

plot of chunk FN_Survival

with(Data, risk.table(cN, FollowUp, Status))
0 50 100
cN0 20 16 13
cN1 7 3 2
cN2 13 11 10
# Defining outcome variable
Status <- Data$DOD
# Creating dicotomic variables from numerical variables for plotting
Size_Median <- factor(ifelse(Data$Size > median(Data$Size, na.rm = TRUE),
  c("Above Median Size"), c("Below Median Size")))
Age_Median <- factor(ifelse(Data$Age > median(Data$Age, na.rm = TRUE),
  c("Above Median Age"), c("Below Median Age")))
# By type of tumor
with(Data, survival.plot(Paradoxical, FollowUp, Status,
  ylim = c(0.6, 1), position = "bottomright", xlab = x.lab, ylab = y.lab,
  title = "Cancer-Related Death by Tumor Type"))

plot of chunk DOD_Survival

with(Data, risk.table(Paradoxical, FollowUp, Status))
0 50 100 150 200 250 300
Superficial High-Grade 12 11 10 9 6 2 2
Deep Low-Grade 29 20 16 12 8 4 2
# By surgical procedure
with(Data, survival.plot(Procedure, FollowUp, Status,
  ylim = c(0.6, 1), position = "bottomright", xlab = x.lab, ylab = y.lab,
  title = "Cancer-Related Death by Surgical Procedure"))

plot of chunk DOD_Survival

with(Data, risk.table(Procedure, FollowUp, Status))
0 50 100 150 200 250 300
Partial penectomy 25 19 17 14 8 4 3
Total penectomy 16 12 9 7 6 2 1
# By anatomical location
with(Data, survival.plot(Anatomical, FollowUp, Status,
  ylim = c(0.6, 1), position = "bottomright", xlab = x.lab, ylab = y.lab,
  title = "Cancer-Related Death by Anatomical Location"))

plot of chunk DOD_Survival

with(Data, risk.table(Anatomical, FollowUp, Status))
0 50 100 150 200 250 300
Glans alone 26 19 14 13 10 3 1
Glans + Coronal sulcus 6 5 5 3 2 2 2
Glans + Coronal sulcus + Foreskin 9 7 7 5 2 1 1
# By anatomical level
with(Data, survival.plot(Level, FollowUp, Status,
  ylim = c(0.6, 1), position = "bottomright", xlab = x.lab, ylab = y.lab,
  title = "Cancer-Related Death by Anatomical Level"))

plot of chunk DOD_Survival

with(Data, risk.table(Level, FollowUp, Status))
0 50 100 150 200
Corpus cavernosum 27 19 15 12 8
Corpus spongiosum 12 10 10 8 5
Lamina propria 2 2 1 1 1
# By median tumor size
with(Data, survival.plot(Size_Median, FollowUp, Status,
  ylim = c(0.6, 1), position = "bottomright", xlab = x.lab, ylab = y.lab,
  title = "Cancer-Related Death by Median Tumor Size"))

plot of chunk DOD_Survival

with(Data, risk.table(Size_Median, FollowUp, Status))
0 50 100 150 200
Above Median Size 9 7 6 5 3
Below Median Size 17 11 7 4 2
# By median patient's age
with(Data, survival.plot(Age_Median, FollowUp, Status,
  ylim = c(0.6, 1), position = "bottomright", xlab = x.lab, ylab = y.lab,
  title = "Cancer-Related Death by Median Patient's Age"))

plot of chunk DOD_Survival

with(Data, risk.table(Age_Median, FollowUp, Status))
0 50 100 150 200
Above Median Age 19 13 10 7 5
Below Median Age 22 18 16 14 9
# By urethral invasion
with(Data, survival.plot(Urethra, FollowUp, Status,
  ylim = c(0.6, 1), position = "bottomright", xlab = x.lab, ylab = y.lab,
  title = "Cancer-Related Death by Urethral Invasion"))

plot of chunk DOD_Survival

with(Data, risk.table(Urethra, FollowUp, Status))
0 50 100 150 200 250 300
No 19 14 12 10 6 2 1
Yes 15 11 9 7 4 3 3
# By vascular invasion
with(Data, survival.plot(Vascular, FollowUp, Status,
  ylim = c(0.6, 1), position = "bottomright", xlab = x.lab, ylab = y.lab,
  title = "Cancer-Related Death by Vascular Invasion"))

plot of chunk DOD_Survival

with(Data, risk.table(Vascular, FollowUp, Status))
0 50 100 150 200
No 36 27 22 17 12
Yes 4 3 3 3 2
# By perineural invasion
with(Data, survival.plot(Perineural, FollowUp, Status,
  ylim = c(0.6, 1), position = "bottomright", xlab = x.lab, ylab = y.lab,
  title = "Cancer-Related Death by Perineural Invasion"))

plot of chunk DOD_Survival

with(Data, risk.table(Perineural, FollowUp, Status))
0 50 100 150 200 250
No 34 26 21 16 11 5
Yes 6 4 4 4 3 1
# By pathological T stage
with(Data, survival.plot(pT, FollowUp, Status,
  ylim = c(0.6, 1), position = "bottomright", xlab = x.lab, ylab = y.lab,
  title = "Cancer-Related Death by Pathological T Stage"))

plot of chunk DOD_Survival

with(Data, risk.table(pT, FollowUp, Status))
0 50
T1 1 1
T2 18 13
T3 15 11
# By clinical N stage
with(Data, survival.plot(cN, FollowUp, Status,
  ylim = c(0.6, 1), position = "bottomright", xlab = x.lab, ylab = y.lab,
  title = "Cancer-Related Death by Clinical N Stage"))

plot of chunk DOD_Survival

with(Data, risk.table(cN, FollowUp, Status))
0 50 100
cN0 20 16 13
cN1 7 3 2
cN2 13 11 10

# Creating variables for GLM analysis
Paradoxical_Inv <- factor(Data$Paradoxical,
  levels = c("Deep Low-Grade", "Superficial High-Grade"))
Data$Multicompartment <- factor(ifelse(Data$Anatomical == "Glans alone",
  c("No"), c("Yes")))
Data$CC <- factor(ifelse(Data$Level == "Corpus cavernosum",
  c("Yes"), c("No")))
Data$High_pT <- factor(ifelse(Data$pT == "T3",
  c("Yes"), c("No")))
Data$cN_Positive <- factor(ifelse(Data$cN == "cN0",
  c("No"), c("Yes")))
# Creating list of variables and labels
Predictors <- with(Data, list(
  "Superficial high-grade vs. deep low-grade" = Paradoxical_Inv,
  "Primary treatment" = Procedure,
  "Age > median" = Age_Median,
  "Multicompartment tumor" = Multicompartment,
  "Invasion of corpus cavernosum" = CC,
  "Tumor size > median" = Size_Median,
  "Invasion of penile urethra" = Urethra,
  "Vascular invasion" = Vascular,
  "Perineural invasion" = Perineural,
  "High pT (>pT3)" = High_pT,
  "Positive clinical nodes" = cN_Positive
  ))
Varlabels <- names(Predictors)

Inguinal Lymph Node Metastasis

Outcome <- Data$Mets
logistic.table(Outcome, Predictors, Varlabels)
Variables OR Lower 95% CI Higher 95% CI P value
Superficial high-grade vs. deep low-grade 14.00 1.77 295.70 0.026
Primary treatment 1.3e-08 NA 2.1e+117 0.99
Age > median 0.53 0.064 3.59 0.52
Multicompartment tumor 1.18 0.14 8.03 0.87
Invasion of corpus cavernosum 0.096 0.0046 0.75 0.047
Tumor size > median 1.07 0.088 25.05 0.96
Invasion of penile urethra 0.27 0.013 2.09 0.26
Vascular invasion 11.00 1.03 127.12 0.04
Perineural invasion 5.17 0.56 42.50 0.12
High pT (>pT3) 0.27 0.013 2.09 0.26
Positive clinical nodes 1.59 0.24 13.20 0.63

Tumor Relapse

Outcome <- Data$Relapse
logistic.table(Outcome, Predictors, Varlabels)
Variables OR Lower 95% CI Higher 95% CI P value
Superficial high-grade vs. deep low-grade 2.45 0.092 65.89 0.54
Primary treatment 1.71 0.064 45.68 0.71
Age > median 0.81 0.03 21.49 0.88
Multicompartment tumor 1.4e-08 NA Inf 1
Invasion of corpus cavernosum 0.52 0.019 13.87 0.65
Tumor size > median 0.50 0.018 13.76 0.64
Invasion of penile urethra 1.21 0.045 32.60 0.89
Vascular invasion 1.4e-07 NA 2.4e+227 1
Perineural invasion 6.40 0.23 180.98 0.21
High pT (>pT3) 1.21 0.045 32.60 0.89
Positive clinical nodes 9.5e+07 1.8e-282 NA 1

Final Nodal Status

Outcome <- Data$Final_Nodal
logistic.table(Outcome, Predictors, Varlabels)
Variables OR Lower 95% CI Higher 95% CI P value
Superficial high-grade vs. deep low-grade 3.12 0.61 16.27 0.16
Primary treatment 0.45 0.06 2.31 0.37
Age > median 0.44 0.08 2.11 0.31
Multicompartment tumor 1.05 0.19 5.08 0.95
Invasion of corpus cavernosum 0.43 0.086 2.17 0.3
Tumor size > median 0.75 0.10 6.70 0.78
Invasion of penile urethra 0.70 0.12 3.48 0.67
Vascular invasion 18.60 1.96 421.69 0.019
Perineural invasion 5.80 0.87 40.60 0.064
High pT (>pT3) 0.70 0.12 3.48 0.67
Positive clinical nodes 1.89 0.40 10.50 0.43

Cancer-Related Death

Tumor median size was removed due to the lack of events in either level.

Outcome <- Data$DOD
Predictors_DOD <- Predictors[-grep("Tumor size > median", Varlabels)]
Varlabels_DOD <- names(Predictors_DOD)
logistic.table(Outcome, Predictors_DOD, Varlabels_DOD)
Variables OR Lower 95% CI Higher 95% CI P value
Superficial high-grade vs. deep low-grade 3.3e-08 NA Inf 1
Primary treatment 1.5e+08 0.00 NA 1
Age > median 7.7e-09 NA Inf 1
Multicompartment tumor 1.7e+08 0.00 NA 1
Invasion of corpus cavernosum 3.3e+07 0.00 NA 1
Invasion of penile urethra 2.1e-08 NA Inf 1
Vascular invasion 1.1e-07 NA Inf 1
Perineural invasion 1e-07 NA Inf 1
High pT (>pT3) 2.1e-08 NA Inf 1
Positive clinical nodes 8.2e-09 NA Inf 1

Inguinal Lymph Node Metastasis

Outcome <- Data$Mets
FU <- Data$FollowUp
cox.table(Outcome, FU, Predictors, Varlabels)
Variables HR Lower 95% CI Higher 95% CI P value
Superficial high-grade vs. deep low-grade 6.13 0.68 55.02 0.065
Primary treatment 2.7e-09 0.00 Inf 0.036
Age > median 0.37 0.061 2.21 0.27
Multicompartment tumor 1.26 0.21 7.65 0.8
Invasion of corpus cavernosum 0.18 0.02 1.60 0.079
Tumor size > median 1.68 0.15 18.85 0.67
Invasion of penile urethra 0.37 0.042 3.34 0.34
Vascular invasion 4.57 0.75 27.71 0.13
Perineural invasion 2.92 0.48 17.68 0.27
High pT (>pT3) 0.37 0.042 3.34 0.34
Positive clinical nodes 2.26 0.37 13.82 0.37

Tumor Relapse

Outcome <- Data$Relapse
cox.table(Outcome, FU, Predictors, Varlabels)
Variables HR Lower 95% CI Higher 95% CI P value
Superficial high-grade vs. deep low-grade 2.04 0.13 32.62 0.62
Primary treatment 1.61 0.10 25.78 0.74
Age > median 0.74 0.046 11.81 0.83
Multicompartment tumor 2.6e-09 0.00 Inf 0.17
Invasion of corpus cavernosum 0.62 0.039 9.99 0.74
Tumor size > median 0.57 0.035 9.06 0.69
Invasion of penile urethra 1.37 0.085 22.01 0.82
Vascular invasion 1.3e-08 0.00 Inf 0.55
Perineural invasion 6.09 0.38 97.49 0.23
High pT (>pT3) 1.37 0.085 22.01 0.82
Positive clinical nodes 1.7e+09 0.00 Inf 0.092

Final Nodal Status

Outcome <- Data$Final_Nodal
cox.table(Outcome, FU, Predictors, Varlabels)
Variables HR Lower 95% CI Higher 95% CI P value
Superficial high-grade vs. deep low-grade 1.77 0.44 7.14 0.43
Primary treatment 0.57 0.12 2.84 0.48
Age > median 0.38 0.089 1.59 0.17
Multicompartment tumor 1.10 0.26 4.63 0.9
Invasion of corpus cavernosum 0.65 0.16 2.60 0.54
Tumor size > median 1.06 0.17 6.47 0.95
Invasion of penile urethra 0.83 0.20 3.46 0.79
Vascular invasion 4.63 1.09 19.62 0.058
Perineural invasion 2.91 0.69 12.28 0.17
High pT (>pT3) 0.83 0.20 3.46 0.79
Positive clinical nodes 2.12 0.50 9.06 0.3

Cancer-Related Death

Outcome <- Data$DOD
cox.table(Outcome, FU, Predictors, Varlabels)
Variables HR Lower 95% CI Higher 95% CI P value
Superficial high-grade vs. deep low-grade 3.2e-09 0.00 Inf 0.41
Primary treatment 1e+09 0.00 Inf 0.17
Age > median 1.4e-09 0.00 Inf 0.21
Multicompartment tumor 1.2e+09 0.00 Inf 0.16
Invasion of corpus cavernosum 3.6e+08 0.00 Inf 0.36
Tumor size > median 1.00 1.00 1.00 1
Invasion of penile urethra 2.1e-09 0.00 Inf 0.28
Vascular invasion 1.3e-08 0.00 Inf 0.65
Perineural invasion 4.3e-09 0.00 Inf 0.57
High pT (>pT3) 2.1e-09 0.00 Inf 0.28
Positive clinical nodes 1.7e-09 0.00 Inf 0.24

About

Clinicopathologic and Outcome Features of Superficial High-Grade and Deep Low-Grade Squamous Cell Carcinomas of the Penis

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages