簡體   English   中英

減去一列中的值並更改另一個值

[英]Subtracting value in a column and change another one

我有一個如下所示的數據框:

structure(list(V1 = c(1174060957322141696, 1174107739209043968, 
1175456617980149760, 1175463444805558272, 1175475052307013632, 
1175916108697808896, 1177035962104369152, 1177959867077791744, 
1180512511436709888, 1179879113844236288), V2 = structure(c(573L, 
595L, 87L, 88L, 91L, 67L, 561L, 100L, 77L, 1L), .Label = c("Fri Oct 04 00:01:16 CEST 2019", 
"Sat Oct 05 13:55:30 CEST 2019", "Sat Oct 05 13:55:56 CEST 2019", 
"Wed Oct 02 10:25:36 CEST 2019", "Wed Oct 02 11:47:16 CEST 2019", 
"Wed Oct 02 23:43:18 CEST 2019", "Wed Oct 02 23:46:07 CEST 2019", 
"Wed Oct 02 23:52:27 CEST 2019", "Wed Oct 02 23:54:42 CEST 2019", 
"Wed Oct 02 23:55:50 CEST 2019", "Wed Oct 02 23:56:11 CEST 2019", 
"Wed Oct 02 23:56:41 CEST 2019", "Wed Oct 02 23:57:12 CEST 2019", 
"Wed Oct 02 23:58:02 CEST 2019", "Wed Oct 02 23:58:53 CEST 2019", 
"Wed Oct 02 23:59:05 CEST 2019", "Wed Oct 02 23:59:16 CEST 2019", 
"Wed Oct 02 23:59:42 CEST 2019", "Wed Sep 18 01:47:53 CEST 2019", 
"Wed Sep 25 00:50:36 CEST 2019", "Wed Sep 25 01:06:26 CEST 2019"
), class = "factor")), row.names = c(NA, 10L), class = "data.frame")

我想通過減去 07:00:00 來更改列 V4 中的小時數。 如果 V4 列中的小時數小於 07:00:00,那么它也應該更改 V3 列中的日期,如果當天轉到前一個月,則它應該更改 V2 列中的月份。 這樣做的最終目的是計算每天有多少行,我可以使用: count(entertainment_one, c("V2", "V3")) 但在我需要重新組織我的數據框之前。 我是 R 新手,不知道從哪里開始。 任何幫助將不勝感激,非常感謝!

首先要注意的是,您的V2是一個因素; 他們不像你想的那樣行事。 快速將其轉換回字符向量!

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

現在,讓我們將日期作為實際的日期時間向量。 但首先,將語言環境設置為英語,因為您的日期似乎是英語; 否則從與您的計算機不同的語言解析日期可能會起作用:

Sys.getlocale('LC_TIME') # take note of this value if you want to reset it.
Sys.setlocale('LC_TIME', 'english')  # works on windows

df$dates <- strptime(df$V2, '%a %b %d %T CEST %Y', tz='XXX')

你看到'XXX ' - 那是因為我不知道 CEST 是什么時區。 如果你所有的日期都在同一個時區,你可能不會注意到......

此時, df$dates是一個 POSIXlt 類對象。 嘗試添加10 (或 1 或任何小整數)

df$dates + 1
 [1] "2019-10-04 00:01:17 EDT" "2019-10-05 13:55:31 EDT" "2019-10-05 13:55:57 EDT" ...

啊,它在數秒。 所以要減去 7 小時,減去 7 小時的秒數:

df$offset <- df$dates - 7 * 60 * 60

看,日期和月份都相應地變化。 現在使用包lubridate來提取日和月分量:

library(lubridate)
month(df$offset)
day(df$offset)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM