Ecoer Logo

@cosmoduende

25

#G3ekArmy, Web Developer & Data Enthusiast. Coordinador académico & Instructor en KMMX. #KotlinCDMX Organizer.

steemit.com/@cosmoduende
VOTING POWER100.00%
DOWNVOTE POWER100.00%
RESOURCE CREDITS100.00%
REPUTATION PROGRESS0.00%
Net Worth
0.000USD
STEEM
0.001STEEM
SBD
0.000SBD
Effective Power
3.365SP
├── Own SP
0.000SP
└── Incoming Deleg
+3.365SP

Detailed Balance

STEEM
balance
0.001STEEM
market_balance
0.000STEEM
savings_balance
0.000STEEM
reward_steem_balance
0.000STEEM
STEEM POWER
Own SP
0.000SP
Delegated Out
0.000SP
Delegation In
3.365SP
Effective Power
3.365SP
Reward SP (pending)
0.000SP
SBD
sbd_balance
0.000SBD
sbd_conversions
0.000SBD
sbd_market_balance
0.000SBD
savings_sbd_balance
0.000SBD
reward_sbd_balance
0.000SBD
{
  "balance": "0.001 STEEM",
  "savings_balance": "0.000 STEEM",
  "reward_steem_balance": "0.000 STEEM",
  "vesting_shares": "0.000000 VESTS",
  "delegated_vesting_shares": "0.000000 VESTS",
  "received_vesting_shares": "5472.996220 VESTS",
  "sbd_balance": "0.000 SBD",
  "savings_sbd_balance": "0.000 SBD",
  "reward_sbd_balance": "0.000 SBD",
  "conversions": []
}

Account Info

namecosmoduende
id1666880
rank0
reputation223990835
created2021-12-26T03:31:15
recovery_accountsteem
proxyNone
post_count1
comment_count0
lifetime_vote_count0
witnesses_voted_for0
last_post2021-12-26T04:49:09
last_root_post2021-12-26T04:49:09
last_vote_time1970-01-01T00:00:00
proxied_vsf_votes0, 0, 0, 0
can_vote1
voting_power0
delayed_votes0
balance0.001 STEEM
savings_balance0.000 STEEM
sbd_balance0.000 SBD
savings_sbd_balance0.000 SBD
vesting_shares0.000000 VESTS
delegated_vesting_shares0.000000 VESTS
received_vesting_shares5472.996220 VESTS
reward_vesting_balance0.000000 VESTS
vesting_balance0.000 STEEM
vesting_withdraw_rate0.000000 VESTS
next_vesting_withdrawal1969-12-31T23:59:59
withdrawn0
to_withdraw0
withdraw_routes0
savings_withdraw_requests0
last_account_recovery1970-01-01T00:00:00
reset_accountnull
last_owner_update1970-01-01T00:00:00
last_account_update2021-12-26T03:38:27
minedNo
sbd_seconds0
sbd_last_interest_payment1970-01-01T00:00:00
savings_sbd_last_interest_payment1970-01-01T00:00:00
{
  "active": {
    "account_auths": [],
    "key_auths": [
      [
        "STM5Tau5GZ6HrhkVwJxKc1Kv3RtHM5gYTEGwZYrCkrN5za3zJEypz",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "balance": "0.001 STEEM",
  "can_vote": true,
  "comment_count": 0,
  "created": "2021-12-26T03:31:15",
  "curation_rewards": 0,
  "delegated_vesting_shares": "0.000000 VESTS",
  "downvote_manabar": {
    "current_mana": 1368249055,
    "last_update_time": 1769141577
  },
  "guest_bloggers": [],
  "id": 1666880,
  "json_metadata": "{}",
  "last_account_recovery": "1970-01-01T00:00:00",
  "last_account_update": "2021-12-26T03:38:27",
  "last_owner_update": "1970-01-01T00:00:00",
  "last_post": "2021-12-26T04:49:09",
  "last_root_post": "2021-12-26T04:49:09",
  "last_vote_time": "1970-01-01T00:00:00",
  "lifetime_vote_count": 0,
  "market_history": [],
  "memo_key": "STM8QuRZpDu5BPKbZ8qe9Uhz3QnY1z8WshZyEVBQP8LZBWHJQHcxJ",
  "mined": false,
  "name": "cosmoduende",
  "next_vesting_withdrawal": "1969-12-31T23:59:59",
  "other_history": [],
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM8KmkcJezrrXQSXHdeKqWi2Vi9SKYfw6j8wYR928ARdJ5PM6iyp",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "pending_claimed_accounts": 0,
  "post_bandwidth": 0,
  "post_count": 1,
  "post_history": [],
  "posting": {
    "account_auths": [],
    "key_auths": [
      [
        "STM6SPZWq4TU9AVogQJeME5nXVhcxKnppLnWfmwXnutdQbXVj7Rek",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting_json_metadata": "{\"profile\":{\"profile_image\":\"https://cdn.steemitimages.com/DQmRnq2CK4sbsPkBoCiB1mRWaUqHCdNPzWhr3sBZwEYXBYy/125781824_10164813861705790_1072496714080998247_n.jpeg\",\"name\":\"Saúl Buentello\",\"about\":\"#G3ekArmy, Web Developer & Data Enthusiast. Coordinador académico & Instructor en KMMX. #KotlinCDMX Organizer.\",\"location\":\"Mexico City\",\"website\":\"https://www.linkedin.com/in/sbuentello/\",\"version\":2}}",
  "posting_rewards": 0,
  "proxied_vsf_votes": [
    0,
    0,
    0,
    0
  ],
  "proxy": "",
  "received_vesting_shares": "5472.996220 VESTS",
  "recovery_account": "steem",
  "reputation": 223990835,
  "reset_account": "null",
  "reward_sbd_balance": "0.000 SBD",
  "reward_steem_balance": "0.000 STEEM",
  "reward_vesting_balance": "0.000000 VESTS",
  "reward_vesting_steem": "0.000 STEEM",
  "savings_balance": "0.000 STEEM",
  "savings_sbd_balance": "0.000 SBD",
  "savings_sbd_last_interest_payment": "1970-01-01T00:00:00",
  "savings_sbd_seconds": "0",
  "savings_sbd_seconds_last_update": "1970-01-01T00:00:00",
  "savings_withdraw_requests": 0,
  "sbd_balance": "0.000 SBD",
  "sbd_last_interest_payment": "1970-01-01T00:00:00",
  "sbd_seconds": "0",
  "sbd_seconds_last_update": "1970-01-01T00:00:00",
  "tags_usage": [],
  "to_withdraw": 0,
  "transfer_history": [],
  "vesting_balance": "0.000 STEEM",
  "vesting_shares": "0.000000 VESTS",
  "vesting_withdraw_rate": "0.000000 VESTS",
  "vote_history": [],
  "voting_manabar": {
    "current_mana": "5472996220",
    "last_update_time": 1769141577
  },
  "voting_power": 0,
  "withdraw_routes": 0,
  "withdrawn": 0,
  "witness_votes": [],
  "witnesses_voted_for": 0
}

Withdraw Routes

IncomingOutgoing
Empty
Empty
{
  "incoming": [],
  "outgoing": []
}
From Date
To Date
steemdelegated 3.365 SP to @cosmoduende
2026/01/23 04:12:57
delegateecosmoduende
delegatorsteem
vesting shares5472.996220 VESTS
Transaction InfoBlock #102847518/Trx 71a9fe7fc62289091605fb0cfec2828f802b4167
View Raw JSON Data
{
  "block": 102847518,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "cosmoduende",
      "delegator": "steem",
      "vesting_shares": "5472.996220 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2026-01-23T04:12:57",
  "trx_id": "71a9fe7fc62289091605fb0cfec2828f802b4167",
  "trx_in_block": 3,
  "virtual_op": 0
}
steemdelegated 3.466 SP to @cosmoduende
2024/12/16 23:32:03
delegateecosmoduende
delegatorsteem
vesting shares5637.215417 VESTS
Transaction InfoBlock #91293921/Trx 5bdbf4e2b0b53fb6b9fdf835b9c633d81f98f292
View Raw JSON Data
{
  "block": 91293921,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "cosmoduende",
      "delegator": "steem",
      "vesting_shares": "5637.215417 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2024-12-16T23:32:03",
  "trx_id": "5bdbf4e2b0b53fb6b9fdf835b9c633d81f98f292",
  "trx_in_block": 3,
  "virtual_op": 0
}
steemdelegated 3.570 SP to @cosmoduende
2023/11/13 15:16:33
delegateecosmoduende
delegatorsteem
vesting shares5806.348949 VESTS
Transaction InfoBlock #79848170/Trx b7925439d0f7022d0788bb23a15d1d24bc76c9fd
View Raw JSON Data
{
  "block": 79848170,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "cosmoduende",
      "delegator": "steem",
      "vesting_shares": "5806.348949 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2023-11-13T15:16:33",
  "trx_id": "b7925439d0f7022d0788bb23a15d1d24bc76c9fd",
  "trx_in_block": 5,
  "virtual_op": 0
}
steemdelegated 5.376 SP to @cosmoduende
2023/09/21 20:14:57
delegateecosmoduende
delegatorsteem
vesting shares8743.627735 VESTS
Transaction InfoBlock #78345940/Trx 46265c3c455d669f42b54d5168138303421a435a
View Raw JSON Data
{
  "block": 78345940,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "cosmoduende",
      "delegator": "steem",
      "vesting_shares": "8743.627735 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2023-09-21T20:14:57",
  "trx_id": "46265c3c455d669f42b54d5168138303421a435a",
  "trx_in_block": 0,
  "virtual_op": 0
}
steemdelegated 5.504 SP to @cosmoduende
2022/11/21 16:49:45
delegateecosmoduende
delegatorsteem
vesting shares8952.137536 VESTS
Transaction InfoBlock #69635371/Trx 6a5401750a9d4da8dafa1c64ac56351e5fc6dbf9
View Raw JSON Data
{
  "block": 69635371,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "cosmoduende",
      "delegator": "steem",
      "vesting_shares": "8952.137536 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2022-11-21T16:49:45",
  "trx_id": "6a5401750a9d4da8dafa1c64ac56351e5fc6dbf9",
  "trx_in_block": 2,
  "virtual_op": 0
}
steemdelegated 5.614 SP to @cosmoduende
2022/03/27 06:19:54
delegateecosmoduende
delegatorsteem
vesting shares9131.236254 VESTS
Transaction InfoBlock #62778964/Trx 9b6da0b9cf3673dba33891a38da3ed8323088c2b
View Raw JSON Data
{
  "block": 62778964,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "cosmoduende",
      "delegator": "steem",
      "vesting_shares": "9131.236254 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2022-03-27T06:19:54",
  "trx_id": "9b6da0b9cf3673dba33891a38da3ed8323088c2b",
  "trx_in_block": 8,
  "virtual_op": 0
}
steemdelegated 16.865 SP to @cosmoduende
2022/03/12 07:09:42
delegateecosmoduende
delegatorsteem
vesting shares27428.271676 VESTS
Transaction InfoBlock #62350077/Trx 4bfd9301ff33607558cb0e618019cbe5de71155e
View Raw JSON Data
{
  "block": 62350077,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "cosmoduende",
      "delegator": "steem",
      "vesting_shares": "27428.271676 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2022-03-12T07:09:42",
  "trx_id": "4bfd9301ff33607558cb0e618019cbe5de71155e",
  "trx_in_block": 3,
  "virtual_op": 0
}
2022/01/04 22:02:51
authorcosmoduende
permlinkchat-analysis-on-whatsapp-part-1-text-analysis-and-data-visualization-with-r
voterdrafic
weight10000 (100.00%)
Transaction InfoBlock #60450381/Trx 2d71d2f514fc3821066f1bcc9bf0211198dcc151
View Raw JSON Data
{
  "block": 60450381,
  "op": [
    "vote",
    {
      "author": "cosmoduende",
      "permlink": "chat-analysis-on-whatsapp-part-1-text-analysis-and-data-visualization-with-r",
      "voter": "drafic",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2022-01-04T22:02:51",
  "trx_id": "2d71d2f514fc3821066f1bcc9bf0211198dcc151",
  "trx_in_block": 5,
  "virtual_op": 0
}
2022/01/02 07:17:57
authorcosmoduende
permlinkchat-analysis-on-whatsapp-part-1-text-analysis-and-data-visualization-with-r
votercosmoduende
weight10000 (100.00%)
Transaction InfoBlock #60375503/Trx 558eec7e428099d93418b359bf812c0c4511e5d0
View Raw JSON Data
{
  "block": 60375503,
  "op": [
    "vote",
    {
      "author": "cosmoduende",
      "permlink": "chat-analysis-on-whatsapp-part-1-text-analysis-and-data-visualization-with-r",
      "voter": "cosmoduende",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2022-01-02T07:17:57",
  "trx_id": "558eec7e428099d93418b359bf812c0c4511e5d0",
  "trx_in_block": 17,
  "virtual_op": 0
}
2022/01/02 07:17:51
authorcosmoduende
permlinkchat-analysis-on-whatsapp-part-1-text-analysis-and-data-visualization-with-r
votercosmoduende
weight10000 (100.00%)
Transaction InfoBlock #60375501/Trx 73342f1c26d61b574317bab1d24884270391f0ba
View Raw JSON Data
{
  "block": 60375501,
  "op": [
    "vote",
    {
      "author": "cosmoduende",
      "permlink": "chat-analysis-on-whatsapp-part-1-text-analysis-and-data-visualization-with-r",
      "voter": "cosmoduende",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2022-01-02T07:17:51",
  "trx_id": "73342f1c26d61b574317bab1d24884270391f0ba",
  "trx_in_block": 0,
  "virtual_op": 0
}
2021/12/26 11:22:54
authorcosmoduende
permlinkchat-analysis-on-whatsapp-part-1-text-analysis-and-data-visualization-with-r
votercricklu
weight-10000 (-100.00%)
Transaction InfoBlock #60179879/Trx 1be790b84e9d8d3a7468ecb08677334fdf9e280a
View Raw JSON Data
{
  "block": 60179879,
  "op": [
    "vote",
    {
      "author": "cosmoduende",
      "permlink": "chat-analysis-on-whatsapp-part-1-text-analysis-and-data-visualization-with-r",
      "voter": "cricklu",
      "weight": -10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-12-26T11:22:54",
  "trx_id": "1be790b84e9d8d3a7468ecb08677334fdf9e280a",
  "trx_in_block": 9,
  "virtual_op": 0
}
steemdelegated 16.977 SP to @cosmoduende
2021/12/26 05:48:42
delegateecosmoduende
delegatorsteem
vesting shares27611.305937 VESTS
Transaction InfoBlock #60173247/Trx 3f6a98158f46cda33697310d9e4901be1564920b
View Raw JSON Data
{
  "block": 60173247,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "cosmoduende",
      "delegator": "steem",
      "vesting_shares": "27611.305937 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-12-26T05:48:42",
  "trx_id": "3f6a98158f46cda33697310d9e4901be1564920b",
  "trx_in_block": 28,
  "virtual_op": 0
}
2021/12/26 05:13:09
authorcosmoduende
permlinkchat-analysis-on-whatsapp-part-1-text-analysis-and-data-visualization-with-r
voterinertia
weight10000 (100.00%)
Transaction InfoBlock #60172539/Trx d4d5510e529ddd6240cc1c6832dc6ac9150713b5
View Raw JSON Data
{
  "block": 60172539,
  "op": [
    "vote",
    {
      "author": "cosmoduende",
      "permlink": "chat-analysis-on-whatsapp-part-1-text-analysis-and-data-visualization-with-r",
      "voter": "inertia",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-12-26T05:13:09",
  "trx_id": "d4d5510e529ddd6240cc1c6832dc6ac9150713b5",
  "trx_in_block": 8,
  "virtual_op": 0
}
cosmoduendeupvoted (100.00%) @mohamed0 / 6pehtq
2021/12/26 04:49:42
authormohamed0
permlink6pehtq
votercosmoduende
weight10000 (100.00%)
Transaction InfoBlock #60172075/Trx 67b06358248654f75f538db458145de9dca5c114
View Raw JSON Data
{
  "block": 60172075,
  "op": [
    "vote",
    {
      "author": "mohamed0",
      "permlink": "6pehtq",
      "voter": "cosmoduende",
      "weight": 10000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-12-26T04:49:42",
  "trx_id": "67b06358248654f75f538db458145de9dca5c114",
  "trx_in_block": 21,
  "virtual_op": 0
}
2021/12/26 04:49:18
authorcosmoduende
permlinkchat-analysis-on-whatsapp-part-1-text-analysis-and-data-visualization-with-r
votersteem.history
weight1000 (10.00%)
Transaction InfoBlock #60172067/Trx bad43ec7f8ffc78c6cccd2c9b22d3d4ee94e7e5a
View Raw JSON Data
{
  "block": 60172067,
  "op": [
    "vote",
    {
      "author": "cosmoduende",
      "permlink": "chat-analysis-on-whatsapp-part-1-text-analysis-and-data-visualization-with-r",
      "voter": "steem.history",
      "weight": 1000
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-12-26T04:49:18",
  "trx_id": "bad43ec7f8ffc78c6cccd2c9b22d3d4ee94e7e5a",
  "trx_in_block": 14,
  "virtual_op": 0
}
2021/12/26 04:49:15
authorsteem.history
bodyHello welcome to Steemit world! I'm @steem.history, who is steem witness. This is a recommended post for you.[Newcomers Guide](https://steemitdev.com/guide/@steemitblog/steemit-a-guide-for-newcomers) and [The Complete Steemit Etiquette Guide (Revision 2.0)](https://steemit.com/steem/@steem.history/the-complete-steemit-etiquette-guide-revision-20-homage-1598425779) and, recommended community [Newcomers Community](https://steemit.com/trending/hive-172186) I wish you luck to your steemit activities.<center> https://cdn.steemitimages.com/DQmXHwdcNs5VPcBft1iSosPdHLpBNBfjuG84g3ffWhMw5JQ/image.png <sub>(The bots avatar has been created using https://robohash.org/)</sub> @steem.history ### My witness activity - [My aspiration for STEEM witness](https://steemit.com/hive-185836/@steem.history/my-aspiration-for-steem-witness-1601280729) - Provides information on Steem. [Reference](https://steemit.com/trending/hive-130095) - Supporting the Steem project. [SPUD4STEEM project](https://steemit.com/trending/spud4steem) - Supporting the community. [Newcomers Community](https://steemit.com/trending/hive-172186),[Steem Sri Lanka](https://steemit.com/trending/hive-133716) ,[WORLD OF XPILAR](https://steemit.com/trending/hive-185836), [GLOBAL STEEM](https://steemit.com/trending/hive-145160), [Scouts](https://steemit.com/trending/hive-181136), [Latino Community](https://steemit.com/trending/hive-188619) ### My featured posts - [The Complete Steemit Etiquette Guide (Revision 2.0) -Homage](https://steemit.com/steem/@steem.history/the-complete-steemit-etiquette-guide-revision-20-homage-1598425779) [![image.png](https://cdn.steemitimages.com/DQmd7of2TpLGqvckkrReWahnkxMWH6eMg5upXesfsujDCnW/image.png)](https://steemlogin.com/sign/account-witness-vote?witness=steem.history&amp;approve=1) <sub>please click it!</sub> ![image.png](https://cdn.steemitimages.com/DQmWDnFh7Kcgj2gdPc5RgG9Cezc4Bapq8sQQJvrkxR8rx5z/image.png) <sub>(Go to https://steemit.com/~witnesses and type fbslo at the bottom of the page)</sub> </center>
json metadata{"tsgs":["hello"]}
parent authorcosmoduende
parent permlinkchat-analysis-on-whatsapp-part-1-text-analysis-and-data-visualization-with-r
permlinkre-cosmoduende-chat-analysis-on-whatsapp-part-1-text-analysis-and-data-visualization-with-r-20211226t044915098z
title
Transaction InfoBlock #60172066/Trx 3df82dcb82f3fa97d9540d9edf9895357cc4950a
View Raw JSON Data
{
  "block": 60172066,
  "op": [
    "comment",
    {
      "author": "steem.history",
      "body": "Hello welcome to Steemit world! \n I'm @steem.history, who is steem witness. \n This is a recommended post for you.[Newcomers Guide](https://steemitdev.com/guide/@steemitblog/steemit-a-guide-for-newcomers) and [The Complete Steemit Etiquette Guide (Revision 2.0)](https://steemit.com/steem/@steem.history/the-complete-steemit-etiquette-guide-revision-20-homage-1598425779) and, recommended community [Newcomers Community](https://steemit.com/trending/hive-172186) \n I wish you luck to your steemit activities.<center> \n \n \n https://cdn.steemitimages.com/DQmXHwdcNs5VPcBft1iSosPdHLpBNBfjuG84g3ffWhMw5JQ/image.png \n <sub>(The bots avatar has been created using https://robohash.org/)</sub> \n @steem.history \n \n ### My witness activity \n - [My aspiration for STEEM witness](https://steemit.com/hive-185836/@steem.history/my-aspiration-for-steem-witness-1601280729) \n - Provides information on Steem.  \n [Reference](https://steemit.com/trending/hive-130095) \n - Supporting the Steem project. \n [SPUD4STEEM project](https://steemit.com/trending/spud4steem) \n - Supporting the community. \n [Newcomers Community](https://steemit.com/trending/hive-172186),[Steem Sri Lanka](https://steemit.com/trending/hive-133716) ,[WORLD OF XPILAR](https://steemit.com/trending/hive-185836), [GLOBAL STEEM](https://steemit.com/trending/hive-145160), [Scouts](https://steemit.com/trending/hive-181136), [Latino Community](https://steemit.com/trending/hive-188619) \n \n ### My featured posts \n - [The Complete Steemit Etiquette Guide (Revision 2.0) -Homage](https://steemit.com/steem/@steem.history/the-complete-steemit-etiquette-guide-revision-20-homage-1598425779) \n \n [![image.png](https://cdn.steemitimages.com/DQmd7of2TpLGqvckkrReWahnkxMWH6eMg5upXesfsujDCnW/image.png)](https://steemlogin.com/sign/account-witness-vote?witness=steem.history&amp;approve=1) \n <sub>please click it!</sub> \n \n ![image.png](https://cdn.steemitimages.com/DQmWDnFh7Kcgj2gdPc5RgG9Cezc4Bapq8sQQJvrkxR8rx5z/image.png) \n <sub>(Go to https://steemit.com/~witnesses and type fbslo at the bottom of the page)</sub> \n \n </center>",
      "json_metadata": "{\"tsgs\":[\"hello\"]}",
      "parent_author": "cosmoduende",
      "parent_permlink": "chat-analysis-on-whatsapp-part-1-text-analysis-and-data-visualization-with-r",
      "permlink": "re-cosmoduende-chat-analysis-on-whatsapp-part-1-text-analysis-and-data-visualization-with-r-20211226t044915098z",
      "title": ""
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-12-26T04:49:15",
  "trx_id": "3df82dcb82f3fa97d9540d9edf9895357cc4950a",
  "trx_in_block": 14,
  "virtual_op": 0
}
2021/12/26 04:49:09
authorcosmoduende
bodyToday, anything we can get data from can be measurable with the right knowledge and tools. WhatsApp is not the exception, thanks to the possibility that it offers us, to export complete conversations. I want to introduce you to rwhatsapp, a small but very useful package, which provides what is necessary to work with WhatsApp text data in R as Data Frame. ## Beginning. How do I export my conversations? You can export every conversation in a very simple way, from your WhatsApp in any open conversation, from the options menu / More / Export chat. Immediately after this, you can send the complete history as a text file with the extension “.txt”. The main function in the package is the rwa_read() function, which allows you to import TXT files directly, so you just need to provide the path to a file to load the messages directly as a Data Frame. For this post, a friend very kindly (whom I thank for the trust) has shared her txt file of the chat with a person with whom she usually has a “casual relationship without commitments” for two years or more. For practical purposes we will analyze this conversation, visualizing some relevant data. ![image.png](https://cdn.steemitimages.com/DQmYj2hFiHgm3dA8PJuMnWhiDB6tZazVdLTWaFuYvAJ5ynV/image.png) ## Preparation and reading data We will import some of the libraries that we will use, we will establish the text file that we will read, and to make this a little more interesting, we will segment by seasons of the year, from the summer of 2018 to the spring of 2020. ``` library(rwhatsapp) library(lubridate) library(tidyverse) library(tidytext) library(kableExtra) library(RColorBrewer) library(knitr)# LEEMOS EL CHAT A TRAVÉS DEL TXT EXPORTADO DESDE LA APP miChat <- rwa_read(“miChat_1.txt”)# PREPARACIÓN DE DATOS PARA ANÁLISIS POR DATE/TIME miChat <- miChat %>% mutate(day = date(time)) %>% mutate( # SEGMENTACIÓN POR MES estacion = case_when( day >= dmy(18082018) & day <= dmy(22092018) ~ “Verano 2018”, day >= dmy(23092018) & day <= dmy(20122018) ~ “Otoño 2018”, day >= dmy(21122018) & day <= dmy(20032019) ~ “Invierno 2018”, day >= dmy(21032019) & day <= dmy(21062019) ~ “Primavera 2019”, day >= dmy(22062019) & day <= dmy(23092019) ~ “Verano 2019”, day >= dmy(23092019) & day <= dmy(20122019) ~ “Otoño 2019”, day >= dmy(21122019) & day <= dmy(20032020) ~ “Invierno 2020”, day >= dmy(21032020) ~ “Primavera 2020”, T ~ “Fuera de rango”) ) %>% mutate( estacion = factor(estacion) ) %>% filter(!is.na(author)) ``` ## Daily message frequency Let’s look at the daily frequency of messages, assigning a personalized color palette for a first graph that shows the messages per day in a very visual way during the established seasons of the year. ``` # COLOR PALETTE paleta.estaciones <- brewer.pal(8,"Set1")[c(7,5,1,3,4,2,6,8)] # VERIFYING HOW MANY MESSAGES WERE SENT DURING THE PERIOD OF TIME miChat %>% group_by(estacion) %>% count(day) %>% ggplot(aes(x = day, y = n, fill=estacion)) + geom_bar(stat = "identity") + scale_fill_manual(values=paleta.estaciones) + ylab("Número de mensajes") + xlab("Fecha") + ggtitle("Mensajes por día", "Frecuencia por estación del año") + theme_minimal() + theme( legend.title = element_blank(), legend.position = "bottom") ``` We will obtain the following plot as a result. Something happened in Fall 2019, they stopped talking so often huh! ![image.png](https://cdn.steemitimages.com/DQma6BTZoXTuQERDgmqrKob4kU9nQwFpBnX4YN4ZfbEoD3U/image.png) ## Message frequency by day of the week Let’s see the daily frequency of messages, but in addition to viewing by season, let’s find out the specific day of the week in which there has been the most interaction. ``` # MESSAGES PER DAY OF THE WEEK miChat %>% mutate( wday.num = wday(day), wday.name = weekdays(day)) %>% group_by(estacion, wday.num, wday.name) %>% count() %>% ggplot(aes(x = reorder(wday.name, -wday.num), y = n, fill=estacion)) + geom_bar(stat = “identity”) + scale_fill_manual(values=paleta.estaciones) + ylab(“”) + xlab(“”) + coord_flip() + ggtitle(“Número de mensajes por día de la semana”, “Frecuencia por estación del año”) + theme_minimal() + theme( legend.title = element_blank(), legend.position = “bottom”) ``` We will obtain the following plot as a result. On Saturdays and Sundays, there have been more interaction! ![image.png](https://cdn.steemitimages.com/DQmVW17xFKG4FqrU4padEFCnDZKQCRU9ZKaYGmD9SBaggYr/image.png) ## Message frequency by the time of day Now let’s look at the daily frequency of messages, but let’s delve into visualizing the most recurring recorded time of interaction. ``` # KEEP THE WEEKEND OF THE WEEK AND RENAME THEM diasemana <- c(“domingo”,”lunes”,”martes”,”miércoles”,”jueves”,”viernes”,”sábado”,”domingo”) names(diasemana) <- 1:7# MENSAJES POR HORA DEL DÍA miChat %>% mutate( hour = hour(time), wday.num = wday(day), wday.name = weekdays(day)) %>% count(estacion, wday.num, wday.name, hour) %>% ggplot(aes(x = hour, y = n, fill=estacion)) + geom_bar(stat = “identity”) + scale_fill_manual(values=paleta.estaciones) + ylab(“Número de mensajes”) + xlab(“Horario”) + ggtitle(“Número de mensajes por hora del día”, “Frecuencia según estación del año”) + facet_wrap(~wday.num, ncol=7, labeller = labeller(wday.num=diasemana))+ theme_minimal() + theme( legend.title = element_blank(), legend.position = “bottom”, panel.spacing.x=unit(0.0, “lines”)) ``` We will obtain the following plot as a result. Between 8 p.m. and 9 p.m., We observe that there is mostly a habit of interaction. ![image.png](https://cdn.steemitimages.com/DQmcyAy4VhMzHMMKhocG11JCYE7B46Aj2ZmzqN8jsUqMsQt/image.png) ## Who has sent the most messages? Let us now analyze which of our users has shown a greater intention of interaction, according to the number of messages sent. To preserve the confidentiality of the subjects, we will also change the names of the users to “Él” (He) and “Ella” (She) simply. ``` # CHANGE THE NAME OF USERS FOR CONFIDENTIALITY levels(miChat$author)[2] <- “Ella” levels(miChat$author)[1] <- “Él # MESSAGES PER USER miChat %>% mutate(day = date(time)) %>% group_by(estacion) %>% count(author) %>% ggplot(aes(x = reorder(author, n), y = n, fill=estacion)) + geom_bar(stat = "identity") + scale_fill_manual(values=paleta.estaciones) + ylab("Número total de mensajes") + xlab("Usuario") + coord_flip() + ggtitle("Número total de mensajes por usuario.", "¿Quién es más comunicativo? Frecuencia por estación del año") + theme_minimal() + theme( legend.title = element_blank(), legend.position = "bottom") ``` We will have the next plot, clearly noting that slightly, but for a little more, He has sent more messages to Her. ![image.png](https://cdn.steemitimages.com/DQmQ3B4EQu7T6xEKkgWeZEJ6NmvShFKwtBTg4aEpL8xSxx4/image.png) ## What are the most used emojis in chat? Emojis are Unicode graphic symbols, which are currently used as an abbreviation to express concepts and ideas, there are hundreds of emojis and rwhatsapp allows us to explore the popularity in the message exchanges of any conversation. Before sorting Emojis, let’s remove its variations. Variations are when, for example, skin or hair color changes, these variations are encoded by the composition of various Unicode characters. When a device reads these characters, it is composed and displayed as one. This process is called “ligation” and it has some interesting implications. Before sorting, we will keep only the first Unicode of the Emoji, removing everything else. ``` # LIBRARY FOR EMOJI PNG IMAGE FETCH FROM https://abs.twimg.com library(ggimage)# EMOJI RANKING plotEmojis <- miChat %>% unnest(emoji, emoji_name) %>% mutate( emoji = str_sub(emoji, end = 1)) %>% mutate( emoji_name = str_remove(emoji_name, “:.*”)) %>% count(emoji, emoji_name) %>% # PLOT TOP 30 EMOJIS top_n(30, n) %>% arrange(desc(n)) %>% # CREA UNA URL DE IMAGEN CON EL UNICODE DE EMOJI mutate( emoji_url = map_chr(emoji, ~paste0( “https://abs.twimg.com/emoji/v2/72x72/”, as.hexmode(utf8ToInt(.x)),”.png”)) ) # PLOT OF THE RANKING OF MOST USED EMOJIS plotEmojis %>% ggplot(aes(x=reorder(emoji_name, n), y=n)) + geom_col(aes(fill=n), show.legend = FALSE, width = .2) + geom_point(aes(color=n), show.legend = FALSE, size = 3) + geom_image(aes(image=emoji_url), size=.045) + scale_fill_gradient(low=”#2b83ba”,high=”#d7191c”) + scale_color_gradient(low=”#2b83ba”,high=”#d7191c”) + ylab(“Número de veces que el emoji fue usado”) + xlab(“Emoji y significado”) + ggtitle(“Emojis más utilizados de manera general”, “Emojis más usados por todos”) + coord_flip() + theme_minimal() + theme() ``` Now we will have the following plot, showing punctually which have been the 30 most used emojis in the chat of our users. After all, today an emoji says more than a thousand words, huh! ![image.png](https://cdn.steemitimages.com/DQmZCg9xSX3bC7YaKEZX5m6sjGHQzWsyNETmKXrTmRLfnu7/image.png) ``` ## Most used emojis in chat, per user We can do the same analysis above, but specifically per chat user, showing which Emojis are most used by each one. # EMOJI RANK PER USER plotEmojis <- miChat %>% unnest(emoji, emoji_name) %>% mutate( emoji = str_sub(emoji, end = 1)) %>% # count(author, emoji, emoji_name, sort = TRUE) %>% # PLOT TOP 8 EMOJIS PER USER group_by(author) %>% top_n(n = 8, n) %>% slice(1:8) %>% # CREATE AN IMAGE URL WITH THE EMOJI UNICODE mutate( emoji_url = map_chr(emoji, ~paste0(“https://abs.twimg.com/emoji/v2/72x72/”,as.hexmode(utf8ToInt(.x)),".png")) ) # PLOT DATA plotEmojis %>% ggplot(aes(x = reorder(emoji, -n), y = n)) + geom_col(aes(fill = author, group=author), show.legend = FALSE, width = .20) + # USE TO FETCH AN EMOJI PNG IMAGE https://abs.twimg.com geom_image(aes(image=emoji_url), size=.13) + ylab(“Número de veces que se usó el emoji”) + xlab(“Emoji”) + facet_wrap(~author, ncol = 5, scales = “free”) + ggtitle(“Emojis más usados en la conversación, por usuario”) + theme_minimal() + theme(axis.text.x = element_blank()) ``` We will obtain the following plot with the top 8 most used emojis. They both have a lot of fun huh! ![image.png](https://cdn.steemitimages.com/DQmdbi5R9Zkn4ZsiXCiUSi49xGpwtoo4uujC1XSbe18pb8v/image.png) ## What are the most used words in chat? As we did with the Emojis, we can also do the frequency analysis of the most used words in the chat, as well as for each of the users. The tidytext package makes this analysis very simple and easy to apply. We will carry out the classification of words, adding all those that we wish to discriminate, that may not be relevant, such as articles, pronouns, etc. ``` library(tidytext) library(stopwords) # REMOVE WORDS WITHOUT RELEVANT MEANING, SUCH AS PRONOUNS, ETC. remover_palabras <- c(stopwords(language = “pt”), “multimedia”, “y”, “la”, “el”,”en”, “es”, “si”, “lo”, “ya”, “pero”, “esa”, “los”,”yo”,”mi”, “un”, “con”, “las”, “omitido”, “más”,”eso”, “al”, “una”, “del”, “qué”, “todo”, “así”, “le”, “su”, “va”, “porque”, “todos”, “hay”, “les”, “pue”, “ese”, “son”, “está”, “pues”, “ahí”, “sí”,”ver”, “estás”, “algo”, “vas”, “ir”,”voy”, “creo”,”fue”,”solo”, “ni”,”sólo”,”nada”, “aqui”, “q”, “tú”) # WORD COUNT miChat %>% unnest_tokens(input = text, output = word) %>% filter(!word %in% remover_palabras) %>% count(word) %>% # PLOT TOP 30 MOST USED WORDS IN CONVERSATION top_n(30,n) %>% arrange(desc(n)) %>% ggplot(aes(x=reorder(word,n), y=n, fill=n, color=n)) + geom_col(show.legend = FALSE, width = .1) + geom_point(show.legend = FALSE, size = 3) + scale_fill_gradient(low=”#2b83ba”,high=”#d7191c”) + scale_color_gradient(low=”#2b83ba”,high=”#d7191c”) + ggtitle(“Palabras más usadas en la conversación de manera general”) + xlab(“Palabras”) + ylab(“Número de veces que se usó la palabra”) + coord_flip() + theme_minimal() ``` So now we will get the following plot, showing the 30 most used words. What the hell will “murci” be, a keyword to refer to Batman? (In spanish “bat” is “murciélago”) ![image.png](https://cdn.steemitimages.com/DQmSZPEzcygRuCLeQJnzWqPJC5uAd7tDvwszLkBXk7Ru9bj/image.png) ``` ## Most used words in chat, by user Now let’s do the same analysis that we have done, but per user of the conversation, showing which are the words that are mostly expressed by each one. # WORD COUNT PER USER miChat %>% unnest_tokens(input = text, output = word) %>% filter(!word %in% remover_palabras) %>% count(author, word, sort = TRUE) %>% # TOP 20 MOST USED WORDS BY USER group_by(author) %>% top_n(n = 20, n) %>% slice(1:20) %>% ungroup() %>% arrange(author, desc(n)) %>% mutate(order=row_number()) %>% ggplot(aes(x = reorder(word, n), y = n, fill = author, color = author)) + geom_col(show.legend = FALSE, width = .1) + geom_point(show.legend = FALSE, size = 3) + xlab(“Palabras”) + ylab(“Número de veces que se usó la palabra”) + coord_flip() + facet_wrap(~author, ncol = 3, scales = “free”) + ggtitle(“Palabras más usadas por usuario en la conversación”) + theme_minimal() ``` Now we will have the following plot with the top 20 words expressed by each user. ![image.png](https://cdn.steemitimages.com/DQmWLNttq1VLVdkS24fGiNQNLqk6vMXQRJMZRsXKzpNYPD3/image.png) I would like to leave this first part up to here, friends, to make what follows more digestible, which will be lexicon analysis and sentiment analysis, using the same conversation. If you want to see elegant, you can use “plotly” to give your plots a little more life. Here I leave a sample of it on a flexdashboard that I put together to present the plots in a more attractive way for this article: https://rpubs.com/cosmoduende/whatsapp-data-analysis-r-part1 So, to implement data analysis with your groups, family, or whoever you want. You can find very interesting data. Here you can find the complete code: https://github.com/cosmoduende/r-whatsapp-analysis-parte1 Thank you and see you next time.
json metadata{"tags":["datascience","programming","coding","rstudio","rstats","dataanalysis","datavisualization","dataviz"],"image":["https://cdn.steemitimages.com/DQmYj2hFiHgm3dA8PJuMnWhiDB6tZazVdLTWaFuYvAJ5ynV/image.png","https://cdn.steemitimages.com/DQma6BTZoXTuQERDgmqrKob4kU9nQwFpBnX4YN4ZfbEoD3U/image.png","https://cdn.steemitimages.com/DQmVW17xFKG4FqrU4padEFCnDZKQCRU9ZKaYGmD9SBaggYr/image.png","https://cdn.steemitimages.com/DQmcyAy4VhMzHMMKhocG11JCYE7B46Aj2ZmzqN8jsUqMsQt/image.png","https://cdn.steemitimages.com/DQmQ3B4EQu7T6xEKkgWeZEJ6NmvShFKwtBTg4aEpL8xSxx4/image.png","https://cdn.steemitimages.com/DQmZCg9xSX3bC7YaKEZX5m6sjGHQzWsyNETmKXrTmRLfnu7/image.png","https://cdn.steemitimages.com/DQmdbi5R9Zkn4ZsiXCiUSi49xGpwtoo4uujC1XSbe18pb8v/image.png","https://cdn.steemitimages.com/DQmSZPEzcygRuCLeQJnzWqPJC5uAd7tDvwszLkBXk7Ru9bj/image.png","https://cdn.steemitimages.com/DQmWLNttq1VLVdkS24fGiNQNLqk6vMXQRJMZRsXKzpNYPD3/image.png"],"links":["https://rpubs.com/cosmoduende/whatsapp-data-analysis-r-part1","https://github.com/cosmoduende/r-whatsapp-analysis-parte1"],"app":"steemit/0.2","format":"markdown"}
parent author
parent permlinkdatascience
permlinkchat-analysis-on-whatsapp-part-1-text-analysis-and-data-visualization-with-r
titleChat Analysis on WhatsApp: Part 1 — Text Analysis and Data visualization with R
Transaction InfoBlock #60172064/Trx 9a9a39d4eac970b9da9ba48ee9ba695b5d42df54
View Raw JSON Data
{
  "block": 60172064,
  "op": [
    "comment",
    {
      "author": "cosmoduende",
      "body": "Today, anything we can get data from can be measurable with the right knowledge and tools. WhatsApp is not the exception, thanks to the possibility that it offers us, to export complete conversations. I want to introduce you to rwhatsapp, a small but very useful package, which provides what is necessary to work with WhatsApp text data in R as Data Frame.\n\n## Beginning. How do I export my conversations?\n\nYou can export every conversation in a very simple way, from your WhatsApp in any open conversation, from the options menu / More / Export chat. Immediately after this, you can send the complete history as a text file with the extension “.txt”.\n\nThe main function in the package is the rwa_read() function, which allows you to import TXT files directly, so you just need to provide the path to a file to load the messages directly as a Data Frame.\n\nFor this post, a friend very kindly (whom I thank for the trust) has shared her txt file of the chat with a person with whom she usually has a “casual relationship without commitments” for two years or more. For practical purposes we will analyze this conversation, visualizing some relevant data.\n\n![image.png](https://cdn.steemitimages.com/DQmYj2hFiHgm3dA8PJuMnWhiDB6tZazVdLTWaFuYvAJ5ynV/image.png)\n\n## Preparation and reading data\nWe will import some of the libraries that we will use, we will establish the text file that we will read, and to make this a little more interesting, we will segment by seasons of the year, from the summer of 2018 to the spring of 2020.\n\n```\nlibrary(rwhatsapp)\nlibrary(lubridate)\nlibrary(tidyverse)\nlibrary(tidytext)\nlibrary(kableExtra)\nlibrary(RColorBrewer)\nlibrary(knitr)# LEEMOS EL CHAT A TRAVÉS DEL TXT EXPORTADO DESDE LA APP\nmiChat <- rwa_read(“miChat_1.txt”)# PREPARACIÓN DE DATOS PARA ANÁLISIS POR DATE/TIME\nmiChat <- miChat %>% \n mutate(day = date(time)) %>% \n mutate(\n # SEGMENTACIÓN POR MES\n estacion = case_when(\n day >= dmy(18082018) & day <= dmy(22092018) ~ “Verano 2018”,\n day >= dmy(23092018) & day <= dmy(20122018) ~ “Otoño 2018”,\n day >= dmy(21122018) & day <= dmy(20032019) ~ “Invierno 2018”,\n day >= dmy(21032019) & day <= dmy(21062019) ~ “Primavera 2019”,\n day >= dmy(22062019) & day <= dmy(23092019) ~ “Verano 2019”,\n day >= dmy(23092019) & day <= dmy(20122019) ~ “Otoño 2019”,\n day >= dmy(21122019) & day <= dmy(20032020) ~ “Invierno 2020”,\n day >= dmy(21032020) ~ “Primavera 2020”,\n T ~ “Fuera de rango”)\n ) %>% \n mutate( estacion = factor(estacion) ) %>% \n filter(!is.na(author)) \n```\n\n## Daily message frequency\nLet’s look at the daily frequency of messages, assigning a personalized color palette for a first graph that shows the messages per day in a very visual way during the established seasons of the year.\n\n```\n# COLOR PALETTE\npaleta.estaciones <- brewer.pal(8,\"Set1\")[c(7,5,1,3,4,2,6,8)]\n# VERIFYING HOW MANY MESSAGES WERE SENT DURING THE PERIOD OF TIME\nmiChat %>% \n  group_by(estacion) %>% \n  count(day) %>%\n  ggplot(aes(x = day, y = n, fill=estacion)) +\n  geom_bar(stat = \"identity\") +\n  scale_fill_manual(values=paleta.estaciones) +\n  ylab(\"Número de mensajes\") + xlab(\"Fecha\") +\n  ggtitle(\"Mensajes por día\", \"Frecuencia por estación del año\") +\n  theme_minimal() +\n  theme( legend.title = element_blank(), \n         legend.position = \"bottom\")\n\n```\n\n\nWe will obtain the following plot as a result. Something happened in Fall 2019, they stopped talking so often huh!\n\n\n![image.png](https://cdn.steemitimages.com/DQma6BTZoXTuQERDgmqrKob4kU9nQwFpBnX4YN4ZfbEoD3U/image.png)\n\n\n## Message frequency by day of the week\nLet’s see the daily frequency of messages, but in addition to viewing by season, let’s find out the specific day of the week in which there has been the most interaction.\n\n```\n# MESSAGES PER DAY OF THE WEEK\nmiChat %>% \n mutate( wday.num = wday(day),\n wday.name = weekdays(day)) %>% \n group_by(estacion, wday.num, wday.name) %>% \n count() %>% \n ggplot(aes(x = reorder(wday.name, -wday.num), y = n, fill=estacion)) +\n geom_bar(stat = “identity”) +\n scale_fill_manual(values=paleta.estaciones) +\n ylab(“”) + xlab(“”) +\n coord_flip() +\n ggtitle(“Número de mensajes por día de la semana”, “Frecuencia por estación del año”) +\n theme_minimal() +\n theme( legend.title = element_blank(), \n legend.position = “bottom”)\n\n```\n\nWe will obtain the following plot as a result. On Saturdays and Sundays, there have been more interaction!\n\n\n![image.png](https://cdn.steemitimages.com/DQmVW17xFKG4FqrU4padEFCnDZKQCRU9ZKaYGmD9SBaggYr/image.png)\n\n## Message frequency by the time of day\nNow let’s look at the daily frequency of messages, but let’s delve into visualizing the most recurring recorded time of interaction.\n\n```\n# KEEP THE WEEKEND OF THE WEEK AND RENAME THEM\ndiasemana <- c(“domingo”,”lunes”,”martes”,”miércoles”,”jueves”,”viernes”,”sábado”,”domingo”)\nnames(diasemana) <- 1:7# MENSAJES POR HORA DEL DÍA\nmiChat %>% \n mutate( hour = hour(time), \n wday.num = wday(day),\n wday.name = weekdays(day)) %>% \n count(estacion, wday.num, wday.name, hour) %>% \n ggplot(aes(x = hour, y = n, fill=estacion)) +\n geom_bar(stat = “identity”) +\n scale_fill_manual(values=paleta.estaciones) +\n ylab(“Número de mensajes”) + xlab(“Horario”) +\n ggtitle(“Número de mensajes por hora del día”, “Frecuencia según estación del año”) +\n facet_wrap(~wday.num, ncol=7, labeller = labeller(wday.num=diasemana))+\n theme_minimal() +\n theme( legend.title = element_blank(), \n legend.position = “bottom”,\n panel.spacing.x=unit(0.0, “lines”))\n\n```\n\nWe will obtain the following plot as a result. Between 8 p.m. and 9 p.m., We observe that there is mostly a habit of interaction.\n\n\n![image.png](https://cdn.steemitimages.com/DQmcyAy4VhMzHMMKhocG11JCYE7B46Aj2ZmzqN8jsUqMsQt/image.png)\n\n\n## Who has sent the most messages?\nLet us now analyze which of our users has shown a greater intention of interaction, according to the number of messages sent. To preserve the confidentiality of the subjects, we will also change the names of the users to “Él” (He) and “Ella” (She) simply.\n\n```\n# CHANGE THE NAME OF USERS FOR CONFIDENTIALITY\nlevels(miChat$author)[2] <- “Ella”\nlevels(miChat$author)[1] <- “Él\n# MESSAGES PER USER\nmiChat %>%\n  mutate(day = date(time)) %>%\n  group_by(estacion) %>% \n  count(author) %>% \n  ggplot(aes(x = reorder(author, n), y = n, fill=estacion)) +\n  geom_bar(stat = \"identity\") +\n  scale_fill_manual(values=paleta.estaciones) +\n  ylab(\"Número total de mensajes\") + xlab(\"Usuario\") +\n  coord_flip() +\n  ggtitle(\"Número total de mensajes por usuario.\", \"¿Quién es más comunicativo? Frecuencia por estación del año\") +\n  theme_minimal() +\n  theme( legend.title = element_blank(), \n         legend.position = \"bottom\")\n\n```\n\nWe will have the next plot, clearly noting that slightly, but for a little more, He has sent more messages to Her.\n\n\n![image.png](https://cdn.steemitimages.com/DQmQ3B4EQu7T6xEKkgWeZEJ6NmvShFKwtBTg4aEpL8xSxx4/image.png)\n\n\n## What are the most used emojis in chat?\nEmojis are Unicode graphic symbols, which are currently used as an abbreviation to express concepts and ideas, there are hundreds of emojis and rwhatsapp allows us to explore the popularity in the message exchanges of any conversation.\n\nBefore sorting Emojis, let’s remove its variations. Variations are when, for example, skin or hair color changes, these variations are encoded by the composition of various Unicode characters. When a device reads these characters, it is composed and displayed as one. This process is called “ligation” and it has some interesting implications. Before sorting, we will keep only the first Unicode of the Emoji, removing everything else.\n\n```\n# LIBRARY FOR EMOJI PNG IMAGE FETCH FROM https://abs.twimg.com\nlibrary(ggimage)# EMOJI RANKING\nplotEmojis <- miChat %>% \n unnest(emoji, emoji_name) %>% \n mutate( emoji = str_sub(emoji, end = 1)) %>% \n mutate( emoji_name = str_remove(emoji_name, “:.*”)) %>% \n count(emoji, emoji_name) %>% \n \n# PLOT TOP 30 EMOJIS\n top_n(30, n) %>% \n arrange(desc(n)) %>% # CREA UNA URL DE IMAGEN CON EL UNICODE DE EMOJI\n mutate( emoji_url = map_chr(emoji, \n ~paste0( “https://abs.twimg.com/emoji/v2/72x72/”, as.hexmode(utf8ToInt(.x)),”.png”)) \n )\n# PLOT OF THE RANKING OF MOST USED EMOJIS\nplotEmojis %>% \n ggplot(aes(x=reorder(emoji_name, n), y=n)) +\n geom_col(aes(fill=n), show.legend = FALSE, width = .2) +\n geom_point(aes(color=n), show.legend = FALSE, size = 3) +\n geom_image(aes(image=emoji_url), size=.045) +\n scale_fill_gradient(low=”#2b83ba”,high=”#d7191c”) +\n scale_color_gradient(low=”#2b83ba”,high=”#d7191c”) +\n ylab(“Número de veces que el emoji fue usado”) +\n xlab(“Emoji y significado”) +\n ggtitle(“Emojis más utilizados de manera general”, “Emojis más usados por todos”) +\n coord_flip() +\n theme_minimal() +\n theme()\n\n```\n\nNow we will have the following plot, showing punctually which have been the 30 most used emojis in the chat of our users. After all, today an emoji says more than a thousand words, huh!\n\n\n![image.png](https://cdn.steemitimages.com/DQmZCg9xSX3bC7YaKEZX5m6sjGHQzWsyNETmKXrTmRLfnu7/image.png)\n\n```\n## Most used emojis in chat, per user\nWe can do the same analysis above, but specifically per chat user, showing which Emojis are most used by each one.\n\n# EMOJI RANK PER USER\nplotEmojis <- miChat %>%\n unnest(emoji, emoji_name) %>%\n mutate( emoji = str_sub(emoji, end = 1)) %>% # \n count(author, emoji, emoji_name, sort = TRUE) %>%\n# PLOT TOP 8 EMOJIS PER USER\n group_by(author) %>%\n top_n(n = 8, n) %>%\n slice(1:8) %>% \n \n# CREATE AN IMAGE URL WITH THE EMOJI UNICODE\n mutate( emoji_url = map_chr(emoji, \n ~paste0(“https://abs.twimg.com/emoji/v2/72x72/”,as.hexmode(utf8ToInt(.x)),\".png\")) )\n# PLOT DATA\nplotEmojis %>% \n ggplot(aes(x = reorder(emoji, -n), y = n)) +\n geom_col(aes(fill = author, group=author), show.legend = FALSE, width = .20) +\n# USE TO FETCH AN EMOJI PNG IMAGE https://abs.twimg.com\n geom_image(aes(image=emoji_url), size=.13) +\n ylab(“Número de veces que se usó el emoji”) +\n xlab(“Emoji”) +\n facet_wrap(~author, ncol = 5, scales = “free”) +\n ggtitle(“Emojis más usados en la conversación, por usuario”) +\n theme_minimal() +\n theme(axis.text.x = element_blank())\n\n```\n\nWe will obtain the following plot with the top 8 most used emojis. They both have a lot of fun huh!\n\n\n![image.png](https://cdn.steemitimages.com/DQmdbi5R9Zkn4ZsiXCiUSi49xGpwtoo4uujC1XSbe18pb8v/image.png)\n\n## What are the most used words in chat?\nAs we did with the Emojis, we can also do the frequency analysis of the most used words in the chat, as well as for each of the users. The tidytext package makes this analysis very simple and easy to apply. We will carry out the classification of words, adding all those that we wish to discriminate, that may not be relevant, such as articles, pronouns, etc.\n\n```\nlibrary(tidytext)\nlibrary(stopwords)\n# REMOVE WORDS WITHOUT RELEVANT MEANING, SUCH AS PRONOUNS, ETC.\nremover_palabras <- c(stopwords(language = “pt”),\n “multimedia”, “y”, “la”, “el”,”en”, “es”, “si”, “lo”, “ya”, “pero”, “esa”, “los”,”yo”,”mi”, “un”, “con”, “las”, “omitido”, “más”,”eso”, “al”, “una”, “del”, “qué”, “todo”, “así”, “le”, “su”, “va”, “porque”, “todos”, “hay”, “les”, “pue”, “ese”, “son”, “está”, “pues”, “ahí”, “sí”,”ver”, “estás”, “algo”, “vas”, “ir”,”voy”, “creo”,”fue”,”solo”, “ni”,”sólo”,”nada”, “aqui”, “q”, “tú”)\n# WORD COUNT\nmiChat %>%\n unnest_tokens(input = text, output = word) %>%\n filter(!word %in% remover_palabras) %>% \n count(word) %>% \n# PLOT TOP 30 MOST USED WORDS IN CONVERSATION\n top_n(30,n) %>% \n arrange(desc(n)) %>% \n ggplot(aes(x=reorder(word,n), y=n, fill=n, color=n)) +\n geom_col(show.legend = FALSE, width = .1) +\n geom_point(show.legend = FALSE, size = 3) +\n scale_fill_gradient(low=”#2b83ba”,high=”#d7191c”) +\n scale_color_gradient(low=”#2b83ba”,high=”#d7191c”) +\n ggtitle(“Palabras más usadas en la conversación de manera general”) +\n xlab(“Palabras”) +\n ylab(“Número de veces que se usó la palabra”) +\n coord_flip() +\n theme_minimal()\n\n```\n\nSo now we will get the following plot, showing the 30 most used words. What the hell will “murci” be, a keyword to refer to Batman? (In spanish “bat” is “murciélago”)\n\n\n![image.png](https://cdn.steemitimages.com/DQmSZPEzcygRuCLeQJnzWqPJC5uAd7tDvwszLkBXk7Ru9bj/image.png)\n\n\n```\n## Most used words in chat, by user\nNow let’s do the same analysis that we have done, but per user of the conversation, showing which are the words that are mostly expressed by each one.\n\n# WORD COUNT PER USER\nmiChat %>%\n unnest_tokens(input = text,\n output = word) %>%\n filter(!word %in% remover_palabras) %>%\n count(author, word, sort = TRUE) %>%\n \n# TOP 20 MOST USED WORDS BY USER\n group_by(author) %>%\n top_n(n = 20, n) %>%\n slice(1:20) %>%\n ungroup() %>% \n arrange(author, desc(n)) %>% \n mutate(order=row_number()) %>% \n ggplot(aes(x = reorder(word, n), y = n, fill = author, color = author)) +\n geom_col(show.legend = FALSE, width = .1) +\n geom_point(show.legend = FALSE, size = 3) +\n xlab(“Palabras”) +\n ylab(“Número de veces que se usó la palabra”) +\n coord_flip() +\n facet_wrap(~author, ncol = 3, scales = “free”) +\n ggtitle(“Palabras más usadas por usuario en la conversación”) +\n theme_minimal()\n\n```\n\nNow we will have the following plot with the top 20 words expressed by each user.\n\n\n![image.png](https://cdn.steemitimages.com/DQmWLNttq1VLVdkS24fGiNQNLqk6vMXQRJMZRsXKzpNYPD3/image.png)\n\n\nI would like to leave this first part up to here, friends, to make what follows more digestible, which will be lexicon analysis and sentiment analysis, using the same conversation.\n\nIf you want to see elegant, you can use “plotly” to give your plots a little more life. Here I leave a sample of it on a flexdashboard that I put together to present the plots in a more attractive way for this article: https://rpubs.com/cosmoduende/whatsapp-data-analysis-r-part1\n\nSo, to implement data analysis with your groups, family, or whoever you want. You can find very interesting data.\nHere you can find the complete code: https://github.com/cosmoduende/r-whatsapp-analysis-parte1\n\nThank you and see you next time.",
      "json_metadata": "{\"tags\":[\"datascience\",\"programming\",\"coding\",\"rstudio\",\"rstats\",\"dataanalysis\",\"datavisualization\",\"dataviz\"],\"image\":[\"https://cdn.steemitimages.com/DQmYj2hFiHgm3dA8PJuMnWhiDB6tZazVdLTWaFuYvAJ5ynV/image.png\",\"https://cdn.steemitimages.com/DQma6BTZoXTuQERDgmqrKob4kU9nQwFpBnX4YN4ZfbEoD3U/image.png\",\"https://cdn.steemitimages.com/DQmVW17xFKG4FqrU4padEFCnDZKQCRU9ZKaYGmD9SBaggYr/image.png\",\"https://cdn.steemitimages.com/DQmcyAy4VhMzHMMKhocG11JCYE7B46Aj2ZmzqN8jsUqMsQt/image.png\",\"https://cdn.steemitimages.com/DQmQ3B4EQu7T6xEKkgWeZEJ6NmvShFKwtBTg4aEpL8xSxx4/image.png\",\"https://cdn.steemitimages.com/DQmZCg9xSX3bC7YaKEZX5m6sjGHQzWsyNETmKXrTmRLfnu7/image.png\",\"https://cdn.steemitimages.com/DQmdbi5R9Zkn4ZsiXCiUSi49xGpwtoo4uujC1XSbe18pb8v/image.png\",\"https://cdn.steemitimages.com/DQmSZPEzcygRuCLeQJnzWqPJC5uAd7tDvwszLkBXk7Ru9bj/image.png\",\"https://cdn.steemitimages.com/DQmWLNttq1VLVdkS24fGiNQNLqk6vMXQRJMZRsXKzpNYPD3/image.png\"],\"links\":[\"https://rpubs.com/cosmoduende/whatsapp-data-analysis-r-part1\",\"https://github.com/cosmoduende/r-whatsapp-analysis-parte1\"],\"app\":\"steemit/0.2\",\"format\":\"markdown\"}",
      "parent_author": "",
      "parent_permlink": "datascience",
      "permlink": "chat-analysis-on-whatsapp-part-1-text-analysis-and-data-visualization-with-r",
      "title": "Chat Analysis on WhatsApp: Part 1 — Text Analysis and Data visualization with R"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-12-26T04:49:09",
  "trx_id": "9a9a39d4eac970b9da9ba48ee9ba695b5d42df54",
  "trx_in_block": 1,
  "virtual_op": 0
}
cosmoduendecustom json: community
2021/12/26 03:39:54
idcommunity
json["subscribe",{"community":"hive-141434"}]
required auths[]
required posting auths["cosmoduende"]
Transaction InfoBlock #60170686/Trx 864a6df7e6e8a30fcfce00ae4253132f7b283130
View Raw JSON Data
{
  "block": 60170686,
  "op": [
    "custom_json",
    {
      "id": "community",
      "json": "[\"subscribe\",{\"community\":\"hive-141434\"}]",
      "required_auths": [],
      "required_posting_auths": [
        "cosmoduende"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-12-26T03:39:54",
  "trx_id": "864a6df7e6e8a30fcfce00ae4253132f7b283130",
  "trx_in_block": 3,
  "virtual_op": 0
}
cosmoduendecustom json: community
2021/12/26 03:39:15
idcommunity
json["subscribe",{"community":"hive-101145"}]
required auths[]
required posting auths["cosmoduende"]
Transaction InfoBlock #60170673/Trx f14e1fc972002deb144f541b3f3d267be8081e13
View Raw JSON Data
{
  "block": 60170673,
  "op": [
    "custom_json",
    {
      "id": "community",
      "json": "[\"subscribe\",{\"community\":\"hive-101145\"}]",
      "required_auths": [],
      "required_posting_auths": [
        "cosmoduende"
      ]
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-12-26T03:39:15",
  "trx_id": "f14e1fc972002deb144f541b3f3d267be8081e13",
  "trx_in_block": 7,
  "virtual_op": 0
}
cosmoduendeupdated their account properties
2021/12/26 03:38:27
accountcosmoduende
extensions[]
json metadata
posting json metadata{"profile":{"profile_image":"https://cdn.steemitimages.com/DQmRnq2CK4sbsPkBoCiB1mRWaUqHCdNPzWhr3sBZwEYXBYy/125781824_10164813861705790_1072496714080998247_n.jpeg","name":"Saúl Buentello","about":"#G3ekArmy, Web Developer & Data Enthusiast. Coordinador académico & Instructor en KMMX. #KotlinCDMX Organizer.","location":"Mexico City","website":"https://www.linkedin.com/in/sbuentello/","version":2}}
Transaction InfoBlock #60170657/Trx 741eaad57d9c1737b44e0de17e5cf06cadbf0afe
View Raw JSON Data
{
  "block": 60170657,
  "op": [
    "account_update2",
    {
      "account": "cosmoduende",
      "extensions": [],
      "json_metadata": "",
      "posting_json_metadata": "{\"profile\":{\"profile_image\":\"https://cdn.steemitimages.com/DQmRnq2CK4sbsPkBoCiB1mRWaUqHCdNPzWhr3sBZwEYXBYy/125781824_10164813861705790_1072496714080998247_n.jpeg\",\"name\":\"Saúl Buentello\",\"about\":\"#G3ekArmy, Web Developer & Data Enthusiast. Coordinador académico & Instructor en KMMX. #KotlinCDMX Organizer.\",\"location\":\"Mexico City\",\"website\":\"https://www.linkedin.com/in/sbuentello/\",\"version\":2}}"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-12-26T03:38:27",
  "trx_id": "741eaad57d9c1737b44e0de17e5cf06cadbf0afe",
  "trx_in_block": 23,
  "virtual_op": 0
}
executive-boardsent 0.001 STEEM to @cosmoduende- "❗ Hello cosmoduende, welcome to the STEEM ecosystem. The Executive Board is publishing insider infos at https://discord.gg/KyBbmhh on how you will be earning the most coins. It's easy, just follow the..."
2021/12/26 03:33:06
amount0.001 STEEM
fromexecutive-board
memo❗ Hello cosmoduende, welcome to the STEEM ecosystem. The Executive Board is publishing insider infos at https://discord.gg/KyBbmhh on how you will be earning the most coins. It's easy, just follow the instructions. THE 1000X BOOSTER KEY is already waiting for you over there too. 😉 Warm regards, The Executive Board.
tocosmoduende
Transaction InfoBlock #60170551/Trx 0551dcce7d444cbaaa4a3a875490727d86093fe5
View Raw JSON Data
{
  "block": 60170551,
  "op": [
    "transfer",
    {
      "amount": "0.001 STEEM",
      "from": "executive-board",
      "memo": "❗ Hello cosmoduende, welcome to the STEEM ecosystem. The Executive Board is publishing insider infos at https://discord.gg/KyBbmhh on how you will be earning the most coins. It's easy, just follow the instructions. THE 1000X BOOSTER KEY is already waiting for you over there too. 😉 Warm regards, The Executive Board.",
      "to": "cosmoduende"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-12-26T03:33:06",
  "trx_id": "0551dcce7d444cbaaa4a3a875490727d86093fe5",
  "trx_in_block": 10,
  "virtual_op": 0
}
steemdelegated 18.630 SP to @cosmoduende
2021/12/26 03:31:15
delegateecosmoduende
delegatorsteem
vesting shares30300.000000 VESTS
Transaction InfoBlock #60170514/Trx 9eac964c644b29378fd5c5f8f3f84becef97e1fc
View Raw JSON Data
{
  "block": 60170514,
  "op": [
    "delegate_vesting_shares",
    {
      "delegatee": "cosmoduende",
      "delegator": "steem",
      "vesting_shares": "30300.000000 VESTS"
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-12-26T03:31:15",
  "trx_id": "9eac964c644b29378fd5c5f8f3f84becef97e1fc",
  "trx_in_block": 12,
  "virtual_op": 0
}
steemcreated a new account: @cosmoduende
2021/12/26 03:31:15
active{"account_auths":[],"key_auths":[["STM5Tau5GZ6HrhkVwJxKc1Kv3RtHM5gYTEGwZYrCkrN5za3zJEypz",1]],"weight_threshold":1}
creatorsteem
extensions[]
json metadata{}
memo keySTM8QuRZpDu5BPKbZ8qe9Uhz3QnY1z8WshZyEVBQP8LZBWHJQHcxJ
new account namecosmoduende
owner{"account_auths":[],"key_auths":[["STM8KmkcJezrrXQSXHdeKqWi2Vi9SKYfw6j8wYR928ARdJ5PM6iyp",1]],"weight_threshold":1}
posting{"account_auths":[],"key_auths":[["STM6SPZWq4TU9AVogQJeME5nXVhcxKnppLnWfmwXnutdQbXVj7Rek",1]],"weight_threshold":1}
Transaction InfoBlock #60170514/Trx 9eac964c644b29378fd5c5f8f3f84becef97e1fc
View Raw JSON Data
{
  "block": 60170514,
  "op": [
    "create_claimed_account",
    {
      "active": {
        "account_auths": [],
        "key_auths": [
          [
            "STM5Tau5GZ6HrhkVwJxKc1Kv3RtHM5gYTEGwZYrCkrN5za3zJEypz",
            1
          ]
        ],
        "weight_threshold": 1
      },
      "creator": "steem",
      "extensions": [],
      "json_metadata": "{}",
      "memo_key": "STM8QuRZpDu5BPKbZ8qe9Uhz3QnY1z8WshZyEVBQP8LZBWHJQHcxJ",
      "new_account_name": "cosmoduende",
      "owner": {
        "account_auths": [],
        "key_auths": [
          [
            "STM8KmkcJezrrXQSXHdeKqWi2Vi9SKYfw6j8wYR928ARdJ5PM6iyp",
            1
          ]
        ],
        "weight_threshold": 1
      },
      "posting": {
        "account_auths": [],
        "key_auths": [
          [
            "STM6SPZWq4TU9AVogQJeME5nXVhcxKnppLnWfmwXnutdQbXVj7Rek",
            1
          ]
        ],
        "weight_threshold": 1
      }
    }
  ],
  "op_in_trx": 0,
  "timestamp": "2021-12-26T03:31:15",
  "trx_id": "9eac964c644b29378fd5c5f8f3f84becef97e1fc",
  "trx_in_block": 12,
  "virtual_op": 0
}

Account Metadata

POSTING JSON METADATA
profile{"profile_image":"https://cdn.steemitimages.com/DQmRnq2CK4sbsPkBoCiB1mRWaUqHCdNPzWhr3sBZwEYXBYy/125781824_10164813861705790_1072496714080998247_n.jpeg","name":"Saúl Buentello","about":"#G3ekArmy, Web Developer & Data Enthusiast. Coordinador académico & Instructor en KMMX. #KotlinCDMX Organizer.","location":"Mexico City","website":"https://www.linkedin.com/in/sbuentello/","version":2}
JSON METADATA
None
{
  "posting_json_metadata": {
    "profile": {
      "profile_image": "https://cdn.steemitimages.com/DQmRnq2CK4sbsPkBoCiB1mRWaUqHCdNPzWhr3sBZwEYXBYy/125781824_10164813861705790_1072496714080998247_n.jpeg",
      "name": "Saúl Buentello",
      "about": "#G3ekArmy, Web Developer & Data Enthusiast. Coordinador académico & Instructor en KMMX. #KotlinCDMX Organizer.",
      "location": "Mexico City",
      "website": "https://www.linkedin.com/in/sbuentello/",
      "version": 2
    }
  },
  "json_metadata": {}
}

Auth Keys

Owner
Single Signature
Public Keys
STM8KmkcJezrrXQSXHdeKqWi2Vi9SKYfw6j8wYR928ARdJ5PM6iyp1/1
Active
Single Signature
Public Keys
STM5Tau5GZ6HrhkVwJxKc1Kv3RtHM5gYTEGwZYrCkrN5za3zJEypz1/1
Posting
Single Signature
Public Keys
STM6SPZWq4TU9AVogQJeME5nXVhcxKnppLnWfmwXnutdQbXVj7Rek1/1
Memo
STM8QuRZpDu5BPKbZ8qe9Uhz3QnY1z8WshZyEVBQP8LZBWHJQHcxJ
{
  "owner": {
    "account_auths": [],
    "key_auths": [
      [
        "STM8KmkcJezrrXQSXHdeKqWi2Vi9SKYfw6j8wYR928ARdJ5PM6iyp",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "active": {
    "account_auths": [],
    "key_auths": [
      [
        "STM5Tau5GZ6HrhkVwJxKc1Kv3RtHM5gYTEGwZYrCkrN5za3zJEypz",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "posting": {
    "account_auths": [],
    "key_auths": [
      [
        "STM6SPZWq4TU9AVogQJeME5nXVhcxKnppLnWfmwXnutdQbXVj7Rek",
        1
      ]
    ],
    "weight_threshold": 1
  },
  "memo": "STM8QuRZpDu5BPKbZ8qe9Uhz3QnY1z8WshZyEVBQP8LZBWHJQHcxJ"
}

Witness Votes

0 / 30
No active witness votes.
[]