Group the text if unionCreate superID column from two Id columnsBest way to convert text files between character sets?Android: combining text & image on a Button or ImageButtonMySQL: Large VARCHAR vs. TEXT?Using .text() to retrieve only text not nested in child tagsGrouping functions (tapply, by, aggregate) and the *apply familyLimit text length to n lines using CSSHow do you change text to bold in Android?PostgreSQL: Difference between text and varchar (character varying)Python Print String To Text FileHow do I find all files containing specific text on Linux?
Why do players in the past play much longer tournaments than today's top players?
When casting Eldritch Blast with the Agonizing Blast eldritch invocation, what do I add to my damage roll?
Robbers: The Hidden OEIS Substring
Did any of the founding fathers anticipate Lysander Spooner's criticism of the constitution?
If the railway suggests a 5-min connection window for changing trains in the Netherlands, does that mean it's definitely doable?
What would be the ideal melee weapon made of "Phase Metal"?
When did the Roman Empire fall according to contemporaries?
Why were Er and Onan punished if they were under 20?
Flatten array with OPENJSON: OPENJSON on a value that may not be an array? [ [1] ], vs [1]
Is an acid a salt? Why (not)?
definition of "percentile"
Is there a word for a message that is intended to be intercepted by an adversary?
What's an appropriate title for a person who deals with conflicts of an Empire?
Can I call 112 to check a police officer's identity in the Czech Republic?
Matchmaker, Matchmaker, make me a match
<schwitz>, <zwinker> etc. Does German always use 2nd Person Singular Imperative verbs for emoticons? If so, why?
Why does the autopilot disengage even when it does not receive pilot input?
If your plane is out-of-control, why does military training instruct releasing the joystick to neutralize controls?
How can one write good dialogue in a story without sounding wooden?
Is Trump personally blocking people on Twitter?
Why are they 'nude photos'?
Is lack of functional requirements agile?
Are neural networks prone to catastrophic forgetting?
How to know whether a Tamron lens is compatible with Canon EOS 60D?
Group the text if union
Create superID column from two Id columnsBest way to convert text files between character sets?Android: combining text & image on a Button or ImageButtonMySQL: Large VARCHAR vs. TEXT?Using .text() to retrieve only text not nested in child tagsGrouping functions (tapply, by, aggregate) and the *apply familyLimit text length to n lines using CSSHow do you change text to bold in Android?PostgreSQL: Difference between text and varchar (character varying)Python Print String To Text FileHow do I find all files containing specific text on Linux?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
Here is my data:
ITEM <- c("A","A","A","B","B","B","B","C","C","D","D","E","E","F","G","G","G")
LOCATION <- c("aaa","bbb","ccc","bbb","fff","ggg","zzz","zzz","eee","hhh","iii","kkk","jjj","iii","iii","yyy","xxx")
df <- as.data.frame(cbind(ITEM,LOCATION))
Long Form:
ITEM LOCATION
1 A aaa
2 A bbb
3 A ccc
4 B bbb
5 B fff
6 B ggg
7 B zzz
8 C zzz
9 C eee
10 D hhh
11 D iii
12 E kkk
13 E jjj
14 F iii
15 G iii
16 G yyy
17 G xxx
Wide Form (easier to read):
ITEM LOCATION.1 LOCATION.2 LOCATION.3 LOCATION.4
A aaa bbb ccc <NA>
B bbb fff ggg zzz
C zzz eee <NA> <NA>
D hhh iii <NA> <NA>
E kkk jjj <NA> <NA>
F iii <NA> <NA> <NA>
G iii yyy xxx <NA>
Originally I was grouping the Item manually when the locations have intersected.
i.e. I will group into A,B,C,D,F,G,E
My raw data have 8000 rows and it takes me several days to do this.
When the dataset is small, I can use the left join and get the desired output
but when the dataset is large, I cannot use that.
Is there any package can group the element by union?
r text grouping
|
show 1 more comment
Here is my data:
ITEM <- c("A","A","A","B","B","B","B","C","C","D","D","E","E","F","G","G","G")
LOCATION <- c("aaa","bbb","ccc","bbb","fff","ggg","zzz","zzz","eee","hhh","iii","kkk","jjj","iii","iii","yyy","xxx")
df <- as.data.frame(cbind(ITEM,LOCATION))
Long Form:
ITEM LOCATION
1 A aaa
2 A bbb
3 A ccc
4 B bbb
5 B fff
6 B ggg
7 B zzz
8 C zzz
9 C eee
10 D hhh
11 D iii
12 E kkk
13 E jjj
14 F iii
15 G iii
16 G yyy
17 G xxx
Wide Form (easier to read):
ITEM LOCATION.1 LOCATION.2 LOCATION.3 LOCATION.4
A aaa bbb ccc <NA>
B bbb fff ggg zzz
C zzz eee <NA> <NA>
D hhh iii <NA> <NA>
E kkk jjj <NA> <NA>
F iii <NA> <NA> <NA>
G iii yyy xxx <NA>
Originally I was grouping the Item manually when the locations have intersected.
i.e. I will group into A,B,C,D,F,G,E
My raw data have 8000 rows and it takes me several days to do this.
When the dataset is small, I can use the left join and get the desired output
but when the dataset is large, I cannot use that.
Is there any package can group the element by union?
r text grouping
Can you clarify how you are making intersections? You want to find where "ITEM" intersects with "LOCATION"? Strictly speaking, upper case "A" does't have an intersection with lower case "a". In example, where does D,F,G come from? or E?
– Soren
Mar 26 at 3:41
the intersection is only focusing on the "LOCATION". For example, Item A and B has intersection at "bbb" and item B and C has intersection at "zzz". so A B C will be a group. I discover a package called "igraph" but I don't know how to group in this case. thanks @Soren
– Tung Man Lok
Mar 26 at 3:53
1
@TungManLok - seeigraph::clusters
-clusters(graph.data.frame(df))
– thelatemail
Mar 26 at 4:01
do you needlibrary(tidyverse); df %>% group_by(ITEM) %>% mutate(id = row_number()) %>% spread(id, LOCATION)
?
– Ronak Shah
Mar 26 at 4:13
@TungManLok I've proposed a solution below. Still not fully clear on the groups. Eg, you note "Item A and B has intersection at "bbb" and item B and C has intersection at "zzz". so A B C will be a group" but in your data.frame input example, ITEM "C" doesn't have any intersection, so it's not clear why ABC is a group?
– Soren
Mar 26 at 4:16
|
show 1 more comment
Here is my data:
ITEM <- c("A","A","A","B","B","B","B","C","C","D","D","E","E","F","G","G","G")
LOCATION <- c("aaa","bbb","ccc","bbb","fff","ggg","zzz","zzz","eee","hhh","iii","kkk","jjj","iii","iii","yyy","xxx")
df <- as.data.frame(cbind(ITEM,LOCATION))
Long Form:
ITEM LOCATION
1 A aaa
2 A bbb
3 A ccc
4 B bbb
5 B fff
6 B ggg
7 B zzz
8 C zzz
9 C eee
10 D hhh
11 D iii
12 E kkk
13 E jjj
14 F iii
15 G iii
16 G yyy
17 G xxx
Wide Form (easier to read):
ITEM LOCATION.1 LOCATION.2 LOCATION.3 LOCATION.4
A aaa bbb ccc <NA>
B bbb fff ggg zzz
C zzz eee <NA> <NA>
D hhh iii <NA> <NA>
E kkk jjj <NA> <NA>
F iii <NA> <NA> <NA>
G iii yyy xxx <NA>
Originally I was grouping the Item manually when the locations have intersected.
i.e. I will group into A,B,C,D,F,G,E
My raw data have 8000 rows and it takes me several days to do this.
When the dataset is small, I can use the left join and get the desired output
but when the dataset is large, I cannot use that.
Is there any package can group the element by union?
r text grouping
Here is my data:
ITEM <- c("A","A","A","B","B","B","B","C","C","D","D","E","E","F","G","G","G")
LOCATION <- c("aaa","bbb","ccc","bbb","fff","ggg","zzz","zzz","eee","hhh","iii","kkk","jjj","iii","iii","yyy","xxx")
df <- as.data.frame(cbind(ITEM,LOCATION))
Long Form:
ITEM LOCATION
1 A aaa
2 A bbb
3 A ccc
4 B bbb
5 B fff
6 B ggg
7 B zzz
8 C zzz
9 C eee
10 D hhh
11 D iii
12 E kkk
13 E jjj
14 F iii
15 G iii
16 G yyy
17 G xxx
Wide Form (easier to read):
ITEM LOCATION.1 LOCATION.2 LOCATION.3 LOCATION.4
A aaa bbb ccc <NA>
B bbb fff ggg zzz
C zzz eee <NA> <NA>
D hhh iii <NA> <NA>
E kkk jjj <NA> <NA>
F iii <NA> <NA> <NA>
G iii yyy xxx <NA>
Originally I was grouping the Item manually when the locations have intersected.
i.e. I will group into A,B,C,D,F,G,E
My raw data have 8000 rows and it takes me several days to do this.
When the dataset is small, I can use the left join and get the desired output
but when the dataset is large, I cannot use that.
Is there any package can group the element by union?
r text grouping
r text grouping
edited Mar 26 at 8:31
M_M
4683 silver badges11 bronze badges
4683 silver badges11 bronze badges
asked Mar 26 at 3:27
Tung Man LokTung Man Lok
264 bronze badges
264 bronze badges
Can you clarify how you are making intersections? You want to find where "ITEM" intersects with "LOCATION"? Strictly speaking, upper case "A" does't have an intersection with lower case "a". In example, where does D,F,G come from? or E?
– Soren
Mar 26 at 3:41
the intersection is only focusing on the "LOCATION". For example, Item A and B has intersection at "bbb" and item B and C has intersection at "zzz". so A B C will be a group. I discover a package called "igraph" but I don't know how to group in this case. thanks @Soren
– Tung Man Lok
Mar 26 at 3:53
1
@TungManLok - seeigraph::clusters
-clusters(graph.data.frame(df))
– thelatemail
Mar 26 at 4:01
do you needlibrary(tidyverse); df %>% group_by(ITEM) %>% mutate(id = row_number()) %>% spread(id, LOCATION)
?
– Ronak Shah
Mar 26 at 4:13
@TungManLok I've proposed a solution below. Still not fully clear on the groups. Eg, you note "Item A and B has intersection at "bbb" and item B and C has intersection at "zzz". so A B C will be a group" but in your data.frame input example, ITEM "C" doesn't have any intersection, so it's not clear why ABC is a group?
– Soren
Mar 26 at 4:16
|
show 1 more comment
Can you clarify how you are making intersections? You want to find where "ITEM" intersects with "LOCATION"? Strictly speaking, upper case "A" does't have an intersection with lower case "a". In example, where does D,F,G come from? or E?
– Soren
Mar 26 at 3:41
the intersection is only focusing on the "LOCATION". For example, Item A and B has intersection at "bbb" and item B and C has intersection at "zzz". so A B C will be a group. I discover a package called "igraph" but I don't know how to group in this case. thanks @Soren
– Tung Man Lok
Mar 26 at 3:53
1
@TungManLok - seeigraph::clusters
-clusters(graph.data.frame(df))
– thelatemail
Mar 26 at 4:01
do you needlibrary(tidyverse); df %>% group_by(ITEM) %>% mutate(id = row_number()) %>% spread(id, LOCATION)
?
– Ronak Shah
Mar 26 at 4:13
@TungManLok I've proposed a solution below. Still not fully clear on the groups. Eg, you note "Item A and B has intersection at "bbb" and item B and C has intersection at "zzz". so A B C will be a group" but in your data.frame input example, ITEM "C" doesn't have any intersection, so it's not clear why ABC is a group?
– Soren
Mar 26 at 4:16
Can you clarify how you are making intersections? You want to find where "ITEM" intersects with "LOCATION"? Strictly speaking, upper case "A" does't have an intersection with lower case "a". In example, where does D,F,G come from? or E?
– Soren
Mar 26 at 3:41
Can you clarify how you are making intersections? You want to find where "ITEM" intersects with "LOCATION"? Strictly speaking, upper case "A" does't have an intersection with lower case "a". In example, where does D,F,G come from? or E?
– Soren
Mar 26 at 3:41
the intersection is only focusing on the "LOCATION". For example, Item A and B has intersection at "bbb" and item B and C has intersection at "zzz". so A B C will be a group. I discover a package called "igraph" but I don't know how to group in this case. thanks @Soren
– Tung Man Lok
Mar 26 at 3:53
the intersection is only focusing on the "LOCATION". For example, Item A and B has intersection at "bbb" and item B and C has intersection at "zzz". so A B C will be a group. I discover a package called "igraph" but I don't know how to group in this case. thanks @Soren
– Tung Man Lok
Mar 26 at 3:53
1
1
@TungManLok - see
igraph::clusters
- clusters(graph.data.frame(df))
– thelatemail
Mar 26 at 4:01
@TungManLok - see
igraph::clusters
- clusters(graph.data.frame(df))
– thelatemail
Mar 26 at 4:01
do you need
library(tidyverse); df %>% group_by(ITEM) %>% mutate(id = row_number()) %>% spread(id, LOCATION)
?– Ronak Shah
Mar 26 at 4:13
do you need
library(tidyverse); df %>% group_by(ITEM) %>% mutate(id = row_number()) %>% spread(id, LOCATION)
?– Ronak Shah
Mar 26 at 4:13
@TungManLok I've proposed a solution below. Still not fully clear on the groups. Eg, you note "Item A and B has intersection at "bbb" and item B and C has intersection at "zzz". so A B C will be a group" but in your data.frame input example, ITEM "C" doesn't have any intersection, so it's not clear why ABC is a group?
– Soren
Mar 26 at 4:16
@TungManLok I've proposed a solution below. Still not fully clear on the groups. Eg, you note "Item A and B has intersection at "bbb" and item B and C has intersection at "zzz". so A B C will be a group" but in your data.frame input example, ITEM "C" doesn't have any intersection, so it's not clear why ABC is a group?
– Soren
Mar 26 at 4:16
|
show 1 more comment
1 Answer
1
active
oldest
votes
#Convert columns to character to avoid complications later
df$ITEM = as.character(df$ITEM)
df$LOCATION = as.character(df$LOCATION)
#Split ITEM by LOCATION and convert each sub-group into data.frame
#by making the first element of each sub-group 'from' and all elements 'to'
df1 = do.call(rbind,
lapply(split(df$ITEM, df$LOCATION), function(x)
data.frame(from = x[1], to = x, stringsAsFactors = FALSE)))
library(igraph)
#Convert the data.frame df1 into graph
g = graph.data.frame(df1)
#Use 'clusters' to identify the separate groups
#and 'groups' to extract the vertices (in this case, ITEM)
groups(clusters(g))
#$`1`
#[1] "A" "C" "B"
#$`2`
#[1] "D" "G" "F"
#$`3`
#[1] "E"
You could also remove the LOCATION
at the end (based on the comment to your question)
lapply(groups(clusters(graph.data.frame(df))), function(x) x[x %in% df$ITEM])
#$`1`
#[1] "A" "B" "C"
#$`2`
#[1] "D" "F" "G"
#$`3`
#[1] "E"
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55349437%2fgroup-the-text-if-union%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
#Convert columns to character to avoid complications later
df$ITEM = as.character(df$ITEM)
df$LOCATION = as.character(df$LOCATION)
#Split ITEM by LOCATION and convert each sub-group into data.frame
#by making the first element of each sub-group 'from' and all elements 'to'
df1 = do.call(rbind,
lapply(split(df$ITEM, df$LOCATION), function(x)
data.frame(from = x[1], to = x, stringsAsFactors = FALSE)))
library(igraph)
#Convert the data.frame df1 into graph
g = graph.data.frame(df1)
#Use 'clusters' to identify the separate groups
#and 'groups' to extract the vertices (in this case, ITEM)
groups(clusters(g))
#$`1`
#[1] "A" "C" "B"
#$`2`
#[1] "D" "G" "F"
#$`3`
#[1] "E"
You could also remove the LOCATION
at the end (based on the comment to your question)
lapply(groups(clusters(graph.data.frame(df))), function(x) x[x %in% df$ITEM])
#$`1`
#[1] "A" "B" "C"
#$`2`
#[1] "D" "F" "G"
#$`3`
#[1] "E"
add a comment |
#Convert columns to character to avoid complications later
df$ITEM = as.character(df$ITEM)
df$LOCATION = as.character(df$LOCATION)
#Split ITEM by LOCATION and convert each sub-group into data.frame
#by making the first element of each sub-group 'from' and all elements 'to'
df1 = do.call(rbind,
lapply(split(df$ITEM, df$LOCATION), function(x)
data.frame(from = x[1], to = x, stringsAsFactors = FALSE)))
library(igraph)
#Convert the data.frame df1 into graph
g = graph.data.frame(df1)
#Use 'clusters' to identify the separate groups
#and 'groups' to extract the vertices (in this case, ITEM)
groups(clusters(g))
#$`1`
#[1] "A" "C" "B"
#$`2`
#[1] "D" "G" "F"
#$`3`
#[1] "E"
You could also remove the LOCATION
at the end (based on the comment to your question)
lapply(groups(clusters(graph.data.frame(df))), function(x) x[x %in% df$ITEM])
#$`1`
#[1] "A" "B" "C"
#$`2`
#[1] "D" "F" "G"
#$`3`
#[1] "E"
add a comment |
#Convert columns to character to avoid complications later
df$ITEM = as.character(df$ITEM)
df$LOCATION = as.character(df$LOCATION)
#Split ITEM by LOCATION and convert each sub-group into data.frame
#by making the first element of each sub-group 'from' and all elements 'to'
df1 = do.call(rbind,
lapply(split(df$ITEM, df$LOCATION), function(x)
data.frame(from = x[1], to = x, stringsAsFactors = FALSE)))
library(igraph)
#Convert the data.frame df1 into graph
g = graph.data.frame(df1)
#Use 'clusters' to identify the separate groups
#and 'groups' to extract the vertices (in this case, ITEM)
groups(clusters(g))
#$`1`
#[1] "A" "C" "B"
#$`2`
#[1] "D" "G" "F"
#$`3`
#[1] "E"
You could also remove the LOCATION
at the end (based on the comment to your question)
lapply(groups(clusters(graph.data.frame(df))), function(x) x[x %in% df$ITEM])
#$`1`
#[1] "A" "B" "C"
#$`2`
#[1] "D" "F" "G"
#$`3`
#[1] "E"
#Convert columns to character to avoid complications later
df$ITEM = as.character(df$ITEM)
df$LOCATION = as.character(df$LOCATION)
#Split ITEM by LOCATION and convert each sub-group into data.frame
#by making the first element of each sub-group 'from' and all elements 'to'
df1 = do.call(rbind,
lapply(split(df$ITEM, df$LOCATION), function(x)
data.frame(from = x[1], to = x, stringsAsFactors = FALSE)))
library(igraph)
#Convert the data.frame df1 into graph
g = graph.data.frame(df1)
#Use 'clusters' to identify the separate groups
#and 'groups' to extract the vertices (in this case, ITEM)
groups(clusters(g))
#$`1`
#[1] "A" "C" "B"
#$`2`
#[1] "D" "G" "F"
#$`3`
#[1] "E"
You could also remove the LOCATION
at the end (based on the comment to your question)
lapply(groups(clusters(graph.data.frame(df))), function(x) x[x %in% df$ITEM])
#$`1`
#[1] "A" "B" "C"
#$`2`
#[1] "D" "F" "G"
#$`3`
#[1] "E"
edited Mar 27 at 15:40
answered Mar 26 at 4:23
d.bd.b
21.1k4 gold badges19 silver badges50 bronze badges
21.1k4 gold badges19 silver badges50 bronze badges
add a comment |
add a comment |
Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.
Got a question that you can’t ask on public Stack Overflow? Learn more about sharing private information with Stack Overflow for Teams.
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55349437%2fgroup-the-text-if-union%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Can you clarify how you are making intersections? You want to find where "ITEM" intersects with "LOCATION"? Strictly speaking, upper case "A" does't have an intersection with lower case "a". In example, where does D,F,G come from? or E?
– Soren
Mar 26 at 3:41
the intersection is only focusing on the "LOCATION". For example, Item A and B has intersection at "bbb" and item B and C has intersection at "zzz". so A B C will be a group. I discover a package called "igraph" but I don't know how to group in this case. thanks @Soren
– Tung Man Lok
Mar 26 at 3:53
1
@TungManLok - see
igraph::clusters
-clusters(graph.data.frame(df))
– thelatemail
Mar 26 at 4:01
do you need
library(tidyverse); df %>% group_by(ITEM) %>% mutate(id = row_number()) %>% spread(id, LOCATION)
?– Ronak Shah
Mar 26 at 4:13
@TungManLok I've proposed a solution below. Still not fully clear on the groups. Eg, you note "Item A and B has intersection at "bbb" and item B and C has intersection at "zzz". so A B C will be a group" but in your data.frame input example, ITEM "C" doesn't have any intersection, so it's not clear why ABC is a group?
– Soren
Mar 26 at 4:16